继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

读书笔记-ES6标准入门:数组的解构赋值

慕标0246214
关注TA
已关注
手记 39
粉丝 251
获赞 1274

基本用法
ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)

//ES5:为变量赋值,只能直接指定值
var a = 1;
var b = 2;
var c = 3;

//ES6:“模式匹配”。可以从数组中提取值,按照位置的对应关系对变量赋值
var [a,b,c]= [1,2,3];

let [foo,[[bar],baz]]=[1,[[2],3]];
foo // 1
bar // 2
baz // 3

如果解构不成功,变量的值就等于undefined

var [foo]=[];

不完全解构,等号左边的模式只匹配等号右边数组的一部分。这种情况下解构OK

let [x,y]=[1,2,3];
x //1
y //2

如果等号的右边不是数组(或者严格说,不是可遍历的解构),那么将会报错。

//报错
let [foo]=1;
let [foo]=false;
let [foo]=NaN;
let [foo]=undefined;
let [foo]={};

上面的表达时都会报错,因为等号右边的值,要么转为对象以后不具备Iterator接口,要么本身就不具备Iterator接口

解构赋值不仅适用于var命令,也适合用于let和const命令。
对于set结构,也可以使用数组的解构赋值。

let [x,y,z]=new Set(["a","b","c"]);
x //"a"

事实上,只要某种数据结构具备Iterator接口,都可以采用数组形式的解构赋值。

默认值
解构赋值允许制定默认值。
ES6内部使用严格相等运算符===判断一个位置是否有值。所以,如果一个数组成员不严格等于undefined,默认值是不会生效的。
如果默认值是一个表达式,那么这个表达式是惰性求值的。即只有在用到的时候才会求值。
默认值可以引用解构赋值的其他变量,但该变量必须已经声明。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP