//完全解构 let [a,b,c]=[1,2,3]; // a=1, b=2, c=3 // 不完全解构 var [d,[e],f]=[1,[2,3],4]; // d=1, e=2, f=4 //允许指定默认值 var [foo="foo"]=[]; // foo="foo" //默认值为表达式时,惰性求值 function f(){ // g能取到值,函数f不会执行 console.log("我不会执行"); } let [g=f()]=["默认值"]; // g="默认值" // 默认值可以引用解构赋值的已经声明的变量 let [h=1,i=h]=[2]; // h=2, i=2
//对象的解构赋值 var {foo,bar}={ bar:"aaa" , foo:"bbb" }; // foo="bbb", bar="aaa" //真正被赋值的是后者,不是前者 let {foo:baz}={foo:"aaa",bar:"bbb"}; // foo为模式,baz为变量 console.log(baz); // baz="aaa" console.log(foo); // ReferenceError:foo is not defined