JS解构赋值?看这一篇就够了!!!

解构赋值

从数组或者对象中提取值,按照对应位置,对变量赋值,对象也可以实现解构

let [a,b,c] = [1,2,3,4,5]     // a=1,b=2,c=3
let [a,b,c] = [1,2]     // a=1,b=2,c=undefined
let [a,,b] = [1,2,3]   // a=1 b=3	跳过其中的值

对象的解构赋值

let {name,age} = {name:11,age:22}
console.log(name) // 11
console.log(age)  // 22

变量必须与属性同名,才能取到正确的值。

let { foo, bar } = { foo: 'aaa', bar: 'bbb' };
// 实际上
let { foo: foo, bar: bar } = { foo: 'aaa', bar: 'bbb' };

对象解构中,属性名(name)只用来匹配

解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量。真正被赋值的是后者,而不是前者。

等号右边只要是可遍历数据就可以用来解构赋值

如果解构不成功,其值为 undefined

还可以用来设置默认值:
ES6 内部使用严格相等运算符(===),判断一个位置是否有值。所以,只有当一个数组成员严格等于undefined,默认值才会生效

let [a,b=1] =[1,2]        // a=1 b = 2
// 如果b没有值,那将是默认值1

只要有可能,就不要在模式中放置圆括号。

解构赋值虽然很方便,但是解析起来并不容易。对于编译器来说,一个式子到底是模式,还是表达式,没有办法从一开始就知道,必须解析到(或解析不到)等号才能知道。由此带来的问题是,如果模式中出现圆括号怎么处理。ES6 的规则是,只要有可能导致解构的歧义,就不得使用圆括号。

但是,这条规则实际上不那么容易辨别,处理起来相当麻烦
赋值语句的非模式部分,可以使用圆括号

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值