久久久精品一区ed2k-女人被男人叉到高潮的视频-中文字幕乱码一区久久麻豆樱花-俄罗斯熟妇真实视频

ES6中數(shù)組的解構(gòu)賦值如何使用-創(chuàng)新互聯(lián)

這篇文章給大家分享的是有關(guān)ES6中數(shù)組的解構(gòu)賦值如何使用的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過來看看吧。

姚安ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!

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

基本用法

ES6 允許按照一定模式,從數(shù)組和對象中提取值,對變量進(jìn)行賦值,這被稱為結(jié)構(gòu)。

在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

還有一種情況,等號(hào)左邊為數(shù)組,但是等號(hào)右邊為其他值,將會(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ù)忍?hào)右邊的賦值沒有值為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)賦值則是等號(hào)兩邊的變量和屬性同名即可取到正確的值。否則值為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)

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

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)賦值
如果等號(hào)右邊是數(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
其他不能使用圓括號(hào)的情況
  1. 變量聲明語句
  2. 函數(shù)參數(shù)
  3. 賦值語句的模式
可以使用圓括號(hào)的情況
  1. 賦值語句的非模式部分,可以使用圓括號(hào)
解構(gòu)賦值的用途
  1. 交換變量的值
  2. 從函數(shù)返回多個(gè)值
  3. 函數(shù)參數(shù)的定義
  4. 提取JOSN數(shù)據(jù)
  5. 函數(shù)參數(shù)的默認(rèn)值
  6. 遍歷Map結(jié)構(gòu)
  7. 輸入模塊的指定方法

感謝各位的閱讀!關(guān)于ES6中數(shù)組的解構(gòu)賦值如何使用就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

本文名稱:ES6中數(shù)組的解構(gòu)賦值如何使用-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://www.sd-ha.com/article8/dojhop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)網(wǎng)站設(shè)計(jì)、響應(yīng)式網(wǎng)站建站公司、服務(wù)器托管、網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站