一、數(shù)組的解構(gòu)賦值:
1.基本用法
let [a, b, c] = [1, 2, 3]; console.log(a, b, c); //1,2,3 let [d, ,] = [1, 2, 3]; console.log(d); //1 let [[e], f] = [[1], 2]; console.log(e, f); //1,2 let [g, ...h] = [1, 2, 3]; console.log(g, h); //1,[2,3]
2.不完全解構(gòu)---右邊提供的值要比變量多
let [[i]] = [[1, 2], 3]; console.log(i); //1
3.解構(gòu)賦值失敗為undefined
let [j] = []; console.log(j); //undefined
4.支持解構(gòu)賦值提供默認(rèn)值
let [k = 1, l = 2] = [3]; console.log(k, l); //3,2
規(guī)則是先看右邊的值是否嚴(yán)格等于undefined,如果是undefined才會(huì)用默認(rèn)值,除此之外,都是優(yōu)先用右邊提供的值。
let [m = 1, n = 2] = [undefined, null]; console.log(m, n); //1,null
默認(rèn)值支持是一個(gè)表達(dá)式,比如一個(gè)函數(shù),賦值規(guī)則還是遵守先看右邊是否為undefined。
function func1() { return 2; } let [o = func1()] = [1]; console.log(o); //1
默認(rèn)值支持使用別的變量,但前提是這個(gè)變量已經(jīng)提前聲明,否則會(huì)報(bào)錯(cuò)
let [p = 1, q = p] = []; console.log(p, q); //1,1
二、對(duì)象的解構(gòu)賦值
1.基本用法
對(duì)象解構(gòu)賦值與數(shù)組有些不同,數(shù)組像按照等號(hào)對(duì)稱的賦值,而對(duì)象是按照key名相同賦值,與順序無關(guān)
let { a, b } = { b: 1, a: 2 }; console.log(a, b); //2,1