数组的解构赋值
let [foo, [[bar], baz]] = [1, [[2], 3]];
let [x, y] = [1, 2, 3];
x
y
let [a, [b], d] = [1, [2, 3], 4];
a
b
d
- 默认值需要注意必须是
undefined
,才会取默认值,null
不是undefined
let [x = 1] = [undefined];
x
let [x = 1] = [null];
x
对象的解构赋值
let { foo: baz } = { foo: "aaa", bar: "bbb" };
- 需要注意的一点就是:对已经声明的变量解构赋值,
第一种写法会报错,因为 JavaScript 引擎会将{x}理解成一个代码块,从而发生语法错误。只有不将大括号写在行首,避免 JavaScript 将其解释为代码块,才能解决这个问题。
let x;
{x} = {x: 1};
let x;
({x} = {x: 1});
- 字符串也可以解构赋值,例如,abc 有属性
length
,
let {length : len} = 'hello';
len
- 用途
- 交换变量的值
- 函数返回多个值,取值的时候非常方便
- 提取json字符串中的数据
//交换值
let x=10;
let y=20;
[x,y]=[y,x]
console.log(x,y)
//返回数组
function example(){
return [1,3,5]
}
[a,b,c]=example()
console.log(a,b,c)
//返回对象
function objExample(){
return {birth:'2012',addres:'beijing'}
}
let {birth,addres} = objExample()
console.log(birth,addres)
//解构json数据
let jsonData={
id:12,
status:'ok',
data:[birth,birth]
}
let {id,status,data}=jsonData
console.log(id,status,data)