在es6之前,变量的赋值是:直接通过指定某个值,从而将指定的值赋值到变量上,
如:
//可以先声明变量
let a;
//再给变量赋值
a=5;
//也可以一气呵成
let a = 5;
在es6中可以通过一种特定的语法格式对变量进行赋值,此操作称为解构赋值,多用于对数组和对象进行解构,这样能使得代码更加简洁。
- 数组的解构赋值
//该写法表示对左边的每一个变量进行依次的赋值
//数组解构中只看位置进行赋值,即变量的值只跟所在位置,跟变量名无关,这是与对象解构不同的一点
let [a,b,c] = [1,2,3] //a=1,b=2,c=3
let [c,b,a] = [1,2,3] //a=3,b=2,c=3
- 对象的解构赋值
//对象解构跟数组解构不同,数组的变量取值取决于位置,而对象变量必须与属性名同名,才能正确的赋值
const {name,age} = {name:'aaa',age:18} //name=aaa,age=18
const {age,name} = {name:'aaa',age:18} //name=aaa,age=18
如果解构不成功,则变量的值是undefined,对象解构和数组解构也可以指定默认值,严格遵守相等运算符(===)
对象解构默认值的生效条件是:属性值严格等于undefined;
数组解构默认值生效条件是:数组成员的位置是否有值。
//数组解构默认值
let[a=1,b]=[,2] //a=1,b=2
//一个数组成员是null,默认值就不会生效,因为null不严格等于undefined。
let[a=1]=[null] //a=null
//对象解构默认值
let{x = 1} = {}; //x=1
let {x, y = 2} = {x: 1}; //x=1,y=2