解构赋值其实就是将一个对象的解构分解,分为两个步骤。
声明变量
变量赋值
构造赋值是ES6中介绍的一种赋值方法,如果等号两侧数据的结构模式匹配,可以将其分配给等号左侧的变量以检索等号右侧的值,如果等号两侧的结构模式不匹配,则报告错误。
1、数组的解结构赋值。 (1)普通数组的解结构赋值;
let [a,b ]=[ 1,2 ]; 控制台. log (a,b ); //1,2 (2)嵌套多层排列
let [d,[e,f]]=[1,[ 2,3 ]; 控制台. log (d,e,f ); //1、2、3 (3)不需要一致的值可以为空;
let [ a,c]=['1'、'2'、'3']; 控制台. log (a,c ); //'1''3' )4)结构匹配错误报告错误;
let [a,[b],c]]=[1,[ 2,3 ]; 2、对象的解结构赋值(1)正常赋值
let { foo: baz }={ foo: 'aaa ',bar: 'bbb' }; console.log(baz )/'AAA ' )2)对象的属性没有顺序,变量必须与属性同名才能获取正确的值
let { bar,foo }={ foo: 'aaa ',bar: 'bbb' }; 控制台. log (bar,foo ); //bbb,AAA(3)构造失败,变量值等于undefined
let {foo}={bar: 'baz'}; 控制台. 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]; 控制台. log (a )/2控制台. log ) b; //1例如,接收变量的返回值。
let [a,b,c ]=function ((返回[ 1,2,3 ]; }console.log(a、b、c; //1,2,3