ES6之变量的解构赋值

变量的解构赋值

1. 数组的解构赋值
  • 基本用法

ES6允许写成下面这样

let [a, d, c] = [1, 2, 3]; //按照对应位置对变量赋值

这种写法也叫模式匹配 只要等号两边模式相同(解构成功),左边变量就会被赋予对应的值

let [head, ...tail] = [1, 2, 3, 4]; //...最后值是数组
head // 1
tail // [2, 3, 4]

解构失败,值会等于undefined

let [foo] = [];
let [bar, foo] = [1]; //foo解构不成功

另一种是不完全解构,等号左边的模式只匹配一部分的等号右边的数组(解构依然成功)

let [a, [b], c] = [1, [2, 3], 4]
a // 1
b // 2
...b    b// [2,3] 
c // 4

如果等号右边不是数组(也就是不可遍历的结构)那么将会报错

let [foo] = 1;
let [foo] = false; //不具备Iterator接口
...

对于set结构,也可以使用数组的解构赋值

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

即,只要某种数据结构具有lterator接口,都可以采用数组形式的解构赋值

function *fibs() {  //fibs是一个Generator函数,原生有Iterator接口
    let a =0;
    let b =1;
    while (true) {
        yield a;
        [a,b] = [b, a + b];
    }
}
let [first, second, third, fourth, fifth, sixth] = fibs();
sixth // 5
  • 默认值

解构赋值允许指定默认值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值