<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

        ES6中變量的解構(gòu)賦值的用法介紹(附代碼)

        來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 19:26:47
        文檔

        ES6中變量的解構(gòu)賦值的用法介紹(附代碼)

        ES6中變量的解構(gòu)賦值的用法介紹(附代碼):本篇文章給大家?guī)淼膬?nèi)容是關(guān)于ES6中變量的解構(gòu)賦值的用法介紹(附代碼),有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對你有所幫助。數(shù)組的解構(gòu)賦值基本用法ES6 允許按照一定模式,從數(shù)組和對象中提取值,對變量進(jìn)行賦值,這被稱為結(jié)構(gòu)。在ES6之前
        推薦度:
        導(dǎo)讀ES6中變量的解構(gòu)賦值的用法介紹(附代碼):本篇文章給大家?guī)淼膬?nèi)容是關(guān)于ES6中變量的解構(gòu)賦值的用法介紹(附代碼),有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對你有所幫助。數(shù)組的解構(gòu)賦值基本用法ES6 允許按照一定模式,從數(shù)組和對象中提取值,對變量進(jìn)行賦值,這被稱為結(jié)構(gòu)。在ES6之前

        在ES6之前想要為變量賦值,只能指定其值,如下:

        let a = 1;
        let b = 2

        而在ES6中可以寫成這樣,如下:

        let [a,b] = [1,2]
        // a = 1, b = 2

        值得注意的是,等式兩邊的值要對等,這樣左邊的變量才會(huì)被賦上右邊對應(yīng)的值,如果不對等左邊的值將會(huì)出現(xiàn)undefined,如下寫法:

        let [foo,[[bar],baz]] = [1,[[2],3]]
        foo // 1
        bar // 2
        baz // 3
        
        注意:只有左右兩邊的 格式一定要對等,數(shù)量可以不對等。
        
        let [a,b,c] = [1,2]
        a = 1, b = 2, c = undefined
        
        let [a,,c] = [1,2,3]
        a = 1, c = 3
        
        let [a, ...b] = [1,2,3]
        a = 1, b = [2,3]
        
        let [a] = []
        let [b,a] = [1]
        a = undefined

        還有一種情況,等號左邊為數(shù)組,但是等號右邊為其他值,將會(huì)報(bào)錯(cuò)。如下:

        let [a] = 1;
        let [a] = false;
        let [a] = NaN;
        let [a] = undefined;
        let [a] = null;
        let [a] = {};
        
        以上都會(huì)報(bào)錯(cuò)

        但是如果左邊為數(shù)組,右邊為字符串,將會(huì)取字符串的第一個(gè)下標(biāo)的值

        let [a] = '121321' a = '1'
        let [a] = 'adgasg' a = 'a'

        對于Set結(jié)構(gòu),同樣可以使用數(shù)組的解構(gòu)賦值。

        let [x,y,z] = new Set([1,2,3])
        x = 1, y = 2, z = 3

        默認(rèn)值

        解構(gòu)賦值允許指定默認(rèn)值
        let [a = 3] = [] // a:3
        let [a = 3,b] = [,4] // a:3 b:4
        let [a = 3,b] = [5,4] // a:5 b:4
        特殊
        let [a = 3] = [undefined] // a:3
        let [a = 3] = [null] // a:null

        Tips: 在es6中使用嚴(yán)格相等運(yùn)算符,在結(jié)構(gòu)賦值中如果需要默認(rèn)值生效,則應(yīng)對等的值為undefined的時(shí)候才會(huì)采用默認(rèn)值,否則還是使用賦值。上面中null 不嚴(yán)格等于undefined++

        如果默認(rèn)值的賦值為一個(gè)表達(dá)式,只有當(dāng)?shù)忍栍疫叺馁x值沒有值為undefined的時(shí)候,才會(huì)取表達(dá)式中的值,如下:

        function demo(){
         console.log('demo')
        }
        
        let [a = demo()] = [] // a: demo
        let [a = demo()] = [1] // a : 1

        對象的解構(gòu)賦值

        與數(shù)組的不同點(diǎn)是,數(shù)組的元素必須和賦值的元素要位置一致才能正確的賦值,而對象的解構(gòu)賦值則是等號兩邊的變量和屬性同名即可取到正確的值。否則值為 undefined
        let {a,b} = {a:'23',b:'3'}
        let {a,b} = {b:'3',a:'23'}
        
        // 上面兩個(gè)的值 都是 a: 23 b: 3
        
        let {a,b} = {a:'3',c:'d'}
        //a: 3 b: undefined

        對象的解構(gòu)賦值還有將某一個(gè)現(xiàn)有對象的方法賦值到一個(gè)新的變量,如下:

        let {sin,cos} = Math
        // Math 中的sin cos 方法將賦值給變量 sin cos
        
        let {log} = console
        // log(2) === console.log(2)

        如果等號左邊的變量名不能和等號右邊的對象的屬性名一致,則必須寫成如下格式:

        let {a:b} = {a:'ss'} // b:ss
        //a是屬性名,b才是實(shí)際賦值的變量名

        對象的解構(gòu)賦值一樣是可以嵌套解構(gòu)的,如下:

        第一種:
        
        let obj = {
         p:[
         'Hello',
         {y:'world'}
         ]
        }
        
        let {p:[x,{y}]} = obj 
        // x: Hello, y: world
        
        這邊的p只是屬性不是變量,如果p想賦值可以寫成:
        
        let {p,:[x,{y}]} = obj
        
        第二種:
        const a = {
         loc: {
         t :1,
         b :{
         c:1,
         d:2 
         }
         }
        }
        let {loc:{t,b:{c,d}}} = a
        或者
        let {loc,loc:{t,b,b:{c,d}}} = a
        嵌套賦值
        let o = {}, arr = []
        
        ({foo:o.prop,bar: arr[0]} = {foo:123,bar:true})
        //o: 123, arr = [true]

        如果解構(gòu)模式 是嵌套的對象,如果子對象所在的父屬性不存在,則會(huì)報(bào)錯(cuò),如下:

        let {foo:{bar}} = {baz:'baz'} //報(bào)錯(cuò)

        默認(rèn)值

        let {x = 3} = {}
        // x: 3
        
        let {x,y = 5} = {x : 1}
        // x: 1, y: 5
        
        let {x: y = 5} = {}
        // y = 5
        
        let {x: y = 5} = {x : 4}
        // y = 4
        
        let {x: y = 'hhhh'} = {}
        //y = 'hhhh'
        
        Tips:以上左邊 x為屬性名,y為變量
        
        
        let {x = 5} = {x: undefined}
        // x: 5
        
        let {x = 4} = {x: null}
        // x: null
        
        同數(shù)組一樣遵循 嚴(yán)格等于 
        只有右邊為undefined的時(shí)候默認(rèn)值才會(huì)生效

        注意點(diǎn):

        1)不能將已聲明的變量用于解構(gòu)賦值,因?yàn)橐呀?jīng)是一個(gè)代碼塊。

        字符串的解構(gòu)賦值

        如果賦值的對象是數(shù)組,字符串將被分割為數(shù)組的格式,一一對應(yīng)賦值
        let [a,b] = 'ha'
        // a = h , b = a
        
        同時(shí)可以獲得字符串的長度:
        
        let {length:len} = '12121'
        // len = 5

        數(shù)值和布爾值的解構(gòu)賦值

        如果等號右邊是數(shù)字或者布爾值 則轉(zhuǎn)換成對象或者說,除了是數(shù)組和對象,其他值都將轉(zhuǎn)換成對象,null 和 undefined 除外。如下:
        let {t:s} = 123
        let {t: s} = true

        函數(shù)參數(shù)的解構(gòu)賦值

        function add([x,y]){
         return x+y
        }
        add([3,5]) // 8
        
        [[3,5],[6,7]].map(([a,b]) => a + b)
        //8 , 13
        
        function m({x=3, y=4} = {}){
         return [x,y]
        }
        m({x:33,y:8}) // [33,8]
        m({x:32}) // [32,4]
        m({}) // [3,4]
        m() // [3,4]
        
        function m({x,y} = {x=0,y=0}){
         return [x,y]
        }
        m({x:33,y:8}) // [33,8]
        // 代替右邊的 x:0, y:0 所以是傳值 33 8
        
        m({x:32}) // [32,undefined]
        //因?yàn)閭髦堤娲疫叺馁x值,但是只有x沒有y
        //所以y是取 左邊y的默認(rèn)值,因?yàn)槟銢]有賦值 為undefined
        
        m({}) // [undefined,undefined] 
        // 取左邊x,y的默認(rèn)值,因?yàn)闆]有賦值 為undefined
        
        m() // [0,0]
        // 沒有傳值,使用本身的賦值 都是0

        其他

        不能使用圓括號的情況

        1. 變量聲明語句
        2. 函數(shù)參數(shù)
        3. 賦值語句的模式

        可以使用圓括號的情況

        1. 賦值語句的非模式部分,可以使用圓括號

        解構(gòu)賦值的用途

        1. 交換變量的值
        2. 從函數(shù)返回多個(gè)值
        3. 函數(shù)參數(shù)的定義
        4. 提取JOSN數(shù)據(jù)
        5. 函數(shù)參數(shù)的默認(rèn)值
        6. 遍歷Map結(jié)構(gòu)
        7. 輸入模塊的指定方法

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        ES6中變量的解構(gòu)賦值的用法介紹(附代碼)

        ES6中變量的解構(gòu)賦值的用法介紹(附代碼):本篇文章給大家?guī)淼膬?nèi)容是關(guān)于ES6中變量的解構(gòu)賦值的用法介紹(附代碼),有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對你有所幫助。數(shù)組的解構(gòu)賦值基本用法ES6 允許按照一定模式,從數(shù)組和對象中提取值,對變量進(jìn)行賦值,這被稱為結(jié)構(gòu)。在ES6之前
        推薦度:
        標(biāo)簽: 使用 用法 代碼
        • 熱門焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲资源在线视频| 日韩精品无码永久免费网站| 亚洲福利电影在线观看| 亚洲乱妇老熟女爽到高潮的片| 成人免费网站久久久| 国产在线观看麻豆91精品免费| 亚洲av无码乱码在线观看野外| 久久久久亚洲AV无码专区首JN| 久久黄色免费网站| 亚洲日韩人妻第一页| 中文字幕亚洲男人的天堂网络 | 色婷婷亚洲一区二区三区| 久久久免费的精品| 四虎影视在线永久免费观看| 亚洲第一成年人网站| 亚洲一区免费在线观看| 日本亚洲成高清一区二区三区| 无码一区二区三区亚洲人妻| 免费看国产一级特黄aa大片| 一区二区3区免费视频| 四虎永久免费观看| 国产日韩精品无码区免费专区国产 | 性做久久久久免费观看| 亚洲精品美女久久久久9999| 中文字幕无码免费久久99| 久久青青草原亚洲av无码app | 亚洲av无一区二区三区| 无码人妻精品一二三区免费| 亚洲小视频在线观看| 国产精品无码免费专区午夜| 免费看男女下面日出水视频| 国产福利电影一区二区三区,免费久久久久久久精 | 精品亚洲永久免费精品| 亚洲一区免费在线观看| 青娱乐在线视频免费观看| 韩国日本好看电影免费看| 亚洲第一男人天堂| 18禁成年无码免费网站无遮挡| 亚洲免费电影网站| 青苹果乐园免费高清在线| 美女免费视频一区二区|