-
什么是数组的解构赋值?
解构赋值是ES6中新增的一种赋值方式; -
数组解构赋值的注意点
let arr = [1, 3, 5];
// let a = arr[0];
// let b = arr[1];
// let c = arr[2];
let [a, b, c] = arr;
console.log("a = " + a); // a = 1
console.log("b = " + b); // b = 3
console.log("c = " + c); // c = 5
2.1 在数组的解构赋值中, 等号左边的格式必须和等号右边的格式一模一样, 才能完全解构
let [a, b, c] = [1, 3, 5];
console.log("a = " + a); // a = 1
console.log("b = " + b); // b = 3
console.log("c = " + c); // c = 5
let [a, b, c] = [1, 3, [2, 4]];
console.log("a = " + a); // a = 1
console.log("b = " + b); // b = 3
console.log("c = " + c); // c = 2,4
let [a, b, [c, d]] = [1, 3, [2, 4]];
console.log("a = " + a); // a = 1
console.log("b = " + b); // b = 3
console.log("c = " + c); // c = 2
console.log("d = " + d); // d = 4
2.2 在数组的解构赋值中, 左边的个数可以和右边的个数不一样
let [a, b] = [1, 3, 5];
console.log("a = " + a); // a = 1
console.log("b = " + b); // b = 3
2.3 在数组的解构赋值中, 右边的个数可以和左边的个数不一样
let [a, b, c] = [1];
console.log("a = " + a); // a = 1
console.log("b = " + b); // b = undefined
console.log("c = " + c); // c = undefined
2.4 在数组的解构赋值中,如果右边的个数和左边的个数不一样, 那么我们可以给左边指定默认值
let [a, b = 888, c = 999] = [1];
console.log("a = " + a); // a = 1
console.log("b = " + b); // b = 888
console.log("c = " + c); // c = 999
2.5 在数组的解构赋值中, 如果左边的个数和右边的个数不一样, 那么如果设置默认值会被覆盖
let [a, b = 666] = [1, 3, 5];
console.log("a = " + a); // a = 1
console.log("b = " + b); // b = 3
2.6 在数组的解构赋值中, 还可以使用ES6中新增的扩展运算符来打包剩余的数据
在数组的解构赋值中, 如果使用了扩展运算符, 那么扩展运算符只能写在最后 (ES6中新增的扩展运算符: …)
let [a, b] = [1, 3, 5];
console.log("a = " + a); // a = 1
console.log("b = " + b); // b = 3
let [a, ...b] = [1, 3, 5];
console.log("a = " + a); // a = 1
console.log("b = " + b); // b = 3,5