解构赋值
用字面量的方法将对象或数组中的值赋给变量
解构
对数组解构
var [a, [b], c] = [1, [2], 3]; //a = 1; b = 2; c = 3;
// 注意这里的b,数组嵌套也是可以正常解构的
对基本类型、undefined、null解构
var [a, b] = 12; // 报错:undefined is not a function
var [c] = false; // 抱错:undefined is not a function
var [d] = '12'; // d = 1;
var [e] = undefined; // 报错:Cannot read property 'Symbol(Symbol.iterator)' of undefined
var [f] = null // 报错:Cannot read property 'Symbol(Symbol.iterator)' of null
对对象解构
var {a, b} = {b: 1, a: 2}; // a = 2; b = 1;
var {a: c, b: d} = {b: 1, a: 2} // d = 1; c = 2;
var {a} = {b: 1}; // a = undefined
默认值
只有在解构的值严格等于undefined
的情况下解构才使用默认值,对象解构同理
var [a = 1] = []; //a = 1;
var [a = 1] = [undefined]; //a = 1;
var [a = 1] = [null] // a = null;