变量的解构赋值
ES6允许按照一定模式,从数组和对象中提取值,从而实现对变量进行赋值。将其称为解构
1.数组的解构赋值
简单来说就是通过一定的声明方式,为变量进行赋值。未能正常解构的变量为undefined。
在进行解构赋值时,可以指定默认值,当右边数组为undefined时取到默认值,但当其为null时取不到默认值。
let [a,b,c]=[1,2,3]; let [ , , third] = ["foo", "bar", "baz"]; let [head,...tail]=[1,2,3,4]; let [foo=true]=[]; let [x,y='b']=['a']; let [x,y='b']=['a',undefined] let [x,y='b']=['a',null]
2.对象的解构赋值
对象的解构赋值,与数组类似,
在等号左边,定义的变量若与等号右边,定义的对象的key一致,则左边对应变量的值会被解构为右边相应key对应的value。
如不想让左边的变量对应值为右边对象key对应的value,则可以通过将右边的变量写为k:v的形式,这时,左边定义的k就没有作用了。
若在左边定义的变量,不能在右边找到相应对象的k,则该值为undefined。
let {foo:fooVal,bar,baz}={ foo: 'aaa', bar: 'bbb' };
console.log(fooVal,bar,baz)
对象解构赋值的默认值。
var {x=3}={}; var {x,y=5}={x:1}; var {x:y=3}={x:5}
3.解构赋值的注意点
let x ; ({x}={x:4}); let arr=[1,2,3] let [a,b,c,d,e]='hello' let {0:first,1:second,}=arr; console.log(first,second)
为一个事先声明的变量进行解构赋值时,要加一个();
数组是特殊的对象,可以通过对象解构赋值;
同理,字符串可以解构为一个数组。
注:文章主要来源:https://es6.ruanyifeng.com/