image.png
上圖是在開發(fā)過(guò)程中遇到的報(bào)錯(cuò)客蹋,才發(fā)現(xiàn)自己真的很少使用數(shù)組結(jié)構(gòu)银伟∷栽回顧一下es6新的語(yǔ)法糖數(shù)組解構(gòu)真的很香~
以往賦值:
let a = 1抄邀,
let b = 2,
let c = 3
const arr = [a,b,c]
使用數(shù)組解構(gòu)賦值
const [a,b,c] = [1,2,3]
完全解構(gòu)
解構(gòu)賦值的寫法本質(zhì)上屬于匹配模式
只要等號(hào)左右模式相同,左邊的變量既可以取到右邊對(duì)應(yīng)的值
舉些例子:
let [a,[b,c] ] = [1,[2,3]]
a // 1
b // 2
c // 3
let [,,d] = [1,2,3]
d // 3
let [e,,f] = [1,2,3]
e // 1
f // 3
let [g,...h] = [1,2,3,4]
g // 1
h // [2,3,4]
let [i,j,...k] = [1]
i // 1
j // undefined 如果解構(gòu)不成功晌纫,值等于undfiend
k //[]
上面是完全解構(gòu)税迷,數(shù)組解構(gòu)也支持不完全解構(gòu)。
不完全解構(gòu)
let [x,y] = [1,2,3]
x // 1
y // 2
解構(gòu)賦值的默認(rèn)值
let [a = true] = []
a // true
let [b =1, c = 1] = [2,undefined]
b // 2
c // 1
// es6內(nèi)部使用嚴(yán)格===锹漱,undefined!==null 只有等于undefined 才會(huì)默認(rèn)賦值
let [d=1] = [undefined]
d // 1
let [e = 1] = [null]
e // null
如果默認(rèn)值是一個(gè)函數(shù)箭养,那么如果有默認(rèn)值是不會(huì)執(zhí)行這個(gè)函數(shù)
let [a=fn()] = [1]
a // 1
默認(rèn)值可以引用已經(jīng)解構(gòu)的其他變量
let [a,b=a] = [1,2]
a // 1
b // 2
// d 作為默認(rèn)值時(shí)還沒有聲名
let [c=d,d]= [1,2] // ReferenceError: d is not defined