变量的解构赋值

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/
posted @ 2022-07-04 21:46  阿贝尔  阅读(78)  评论(0编辑  收藏  举报