解构赋值是ES6中推出的一种简介的赋值方式,当等号两边的数据的结构模式匹配则可以为取出等号右边的值赋值给等号左边的变量,两边的结构模式不匹配则报错。
1、数组的解构赋值。
(1) 普通数组的解构赋值;
let [a,b]=[1,2];
console.log(a,b); //1,2
(2) 嵌套多层的数组;
let [d,[e,f]] =[1,[2,3]];
console.log(d,e,f); //1,2,3
(3) 不需要匹配的值可以空着;
let [ a, , c] = ["1", "2", "3"];
console.log(a,c);// "1" "3"
(4) 结构匹配错误则会报错;
let [a, [[b], c]] = [1, [2, 3]];
2、对象的解构赋值
(1) 正常的赋值
let { foo: baz } = { foo: 'aaa', bar: 'bbb' };
baz // "aaa"
(2) 对象的属性没有次序,变量必须与属性同名,才能取到正确的值
let { bar, foo } = { foo: 'aaa', bar: 'bbb' };
console.log(bar,foo); //bbb,aaa
(3) 解构失败,变量的值等于undefined
let {foo} = {bar: 'baz'};
console.log(foo); // undefined
(4) 解构赋值在对象中是为属性值赋值,而不是属性名赋值
let { foo: baz } = { foo: 'aaa', bar: 'bbb' };
baz // "aaa"
foo // foo is not defined
还有一些其他的利用解构赋值。
例如,两个变量交换值。
let a=1,b=2;
[a,b] = [b,a];
a; //2
b; //1
例如,接收变量的返回值。
let [a,b,c] = function(){
return [1,2,3];
}
a,b,c; //1,2,3