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

ES6 数组解构赋值 默认赋值

ES6 数组解构赋值 默认赋值

饮歌长啸 2018-11-14 13:49:11
在看到阮一峰的ES6教程解构赋值,默认值时,这个地方没太看懂。原文链接注意,ES6 内部使用严格相等运算符(===),判断一个位置是否有值。所以,如果一个数组成员不严格等于undefined,默认值是不会生效的。function f() {  console.log('aaa'); }let [x = f()] = [1];书上说上面这段代码等价于下面这段let x; if ([1][0] === undefined) {   x = f(); } else {   x = [1][0]; }请问一下这个[1][0]是哪里来的?不应该是下面这样的吗?let x;if (1 === undefined) {  x = f(); } else {  x = 1; }
查看完整描述

1 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

数组解构时,原理是这样的,把一个或者多个变量放到数组A中,然后让这个数组A等于另一个数组B,那么解构时A数组某个位置的值就等于B数组对应位置的值。

let [x = f()] = [1];

这段代码的意思就是,首先创建一个数组A,数组A中的第一项是x,然后又有一个数组B,B = [1].
然后令 A = B.最后的效果就是A[0] = B[0],即x=B[0],也即x=[1][0]
所以在判断是不是等于undefined时,要这样

if([1][0] === undefined)


查看完整回答
反对 回复 2018-12-18
  • 1 回答
  • 0 关注
  • 567 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信