ES6 解构赋值

参考来源: http://es6.ruanyifeng.com/#docs/destructuring

  • 从数组或对象或者说是可以遍历的物件中的提取值, 而后对变量进行赋值,称为解构赋值. 如果不是一个可以遍历的对象的话就会报错
// 先前给变量赋值
let a = 10
let b = 20
// 解构赋值
let [a,b,c] = [1,2,3]
// 非可遍历对象
let [d] = 1
// 报错
// 在解构赋值的时候面对那些不能被遍历的对象,则会优先先转为对象,再做进一步处理.
let {toString:b} = 1
b
  • 解构赋值需要的是等号两边的结构相等.即可将等号右边的结果依据相同的结构赋予左边的变量.如果解构失败,那么变量就会被赋予 undefined. 值得注意的是如果等号左边的结构如果是属于等号右边的结构的一部分的话, 还是可以实现解构赋值.
let [ , , third] = ["foo", "bar", "baz"];
third // "baz"

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

let [head, ...tail] = [1, 2, 3, 4];
head // 1
tail // [2, 3, 4]
// 解构赋值失败.
let a = []
a // undefined
let [a,b] = [1]
a // 1
b // undefined
// 局部的结构赋值
let [a]  = [1,2,3]
a // 1
  • 同时解构赋值是允许有默认值, 需要注意的是默认值的成立时建立在无法在等号右边找到其对应的结果,并且这个是严格等于 undefined
let [a,b=3] = [1]
a // 1
b // 3
// null 不是严格等于 undefined
var {x = 3} = {x: null};
x // null
  • 对象的解构赋值,一般来说等号左边是 key,才能从右边的对象获取值.但是如果需要变量与属性名不一致的时候,可以采用下面的写法.
// 对象的解构赋值没有顺序性, 完全是看变量是否为对象中的 key 值.
let {a,b} = { a: 10 , b: 20 }
a // 10
b // 20
// 如果变量与 key 值不相同时候
let { a: c} = { a: 10, b: 20 }
c // 10
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值