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