ES6——字符串,数值,布尔值以及函数参数的解构赋值
- 字符串的解构赋值
之所以字符串能够被解构,是因为字符串被转换成了一个类数组的对象
let [a, b, c, d, e] = 'Jisoo';
console.log(a); //J
console.log(b); //i
console.log(c); //s
console.log(d); //o
console.log(e); //o
类数组都有length属性,因此还可以对这个属性进行解构赋值
let {
length: len
} = 'jisoo';
console.log(len);//5
- 数值和布尔值的解构赋值
如果等号右边是数值或者布尔值时,会先将其转换为对象
let {
prop: x
} = 123;
console.log(x); //undefined(123被转换为对象)
let {
prop1: y
} = true;
console.log(y); //undefined(true被转换为对象)
let {
prop2: z
} = undefined;//undefined不能转换为对象,所以报错
console.log(z); //Error
- 函数参数的解构赋值
function add([x, y]) {
return x + y;
}
var sum = add([1, 2]);
console.log(sum);
函数add()参数表面是一个数组,但实际上在传入参数的那一刻,数组参数就被解构成变量x和y
函数参数的解构也可以使用默认值
function move({
x = 0,
y = 0
} = {}) {
return [x, y];
}
var x = move({
x: 3,
y: 8
});
console.log(x); //[3,8]
var y = move({
x: 3
});
console.log(y); //[3,0]
var z = move({}); //
console.log(z); //[0,0]