为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
JavaScript

基本用法
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,默认值是不会生效的。
如果默认值是一个表达式,那么这个表达式是惰性求值的。即只有在用到的时候才会求值。
默认值可以引用解构赋值的其他变量,但该变量必须已经声明。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消