ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构。解构赋值也是声明变量的一种方式,让我们看几段代码理解什么是解构赋值。
1.数组的解构赋值
let [a,b,c,d] = [1,2,3,4];
console.log(c);
打印c的结果是3,这时我们会发现左边数组和右边数组是一一对应的。
2.对象的解构赋值
let {name,age} = {
name:"李华",
age:"18"
}
console.log(name,age)
其实我们这样的书写方式是不完全的,
let {name:name,age:age} = {
name:"李华",
age:"18"
}
console.log(name,age)
冒号后边的name才是我们起的变量名,冒号前边的和我们的key值是一一对应的,只不过我们的key值和value值是相等的,所以可以直接简写成name,age。
如果我们写成
let {name:name1,age:age1} = {
name:"李华",
age:"18"
}
console.log(name1,age)
这时我们会发现name可以打印出来结果,而age不可以。
3.复杂对象的解构赋值
let obj = {
code:200,
result:["三国演义","水浒传","红楼梦","西游记"]
}
let {result:[a,,c]} = obj;
console.log(a,c)
这时打印的结果是三国演义和红楼梦。
解构赋值就是对原结构进行一比一的还原,对于其中的某些值,我们可以起一个变量的名字,相当于我们在声明变量。
当然还有一些特殊的解构赋值,比如字符串和Math的应用,在这里就不一一举例了。
4.解构赋值的实际应用
解构赋值可以用于函数参数的默认值和提取json中的数据,不过解构赋值最重要的应用是在不使用第三个变量的情况下,交换两个变量的值。
[num1,num2] = [num2,num1];