@@ -122,7 +122,7 @@ let [x, y = 'b'] = ['a']; // x='a', y='b'
122
122
let [x, y = ' b' ] = [' a' , undefined ]; // x='a', y='b'
123
123
```
124
124
125
- 注意,ES6 内部使用严格相等运算符(` === ` ),判断一个位置是否有值。所以,如果一个数组成员不严格等于 ` undefined ` ,默认值是不会生效的 。
125
+ 注意,ES6 内部使用严格相等运算符(` === ` ),判断一个位置是否有值。所以,只有当一个数组成员严格等于 ` undefined ` ,默认值才会生效 。
126
126
127
127
``` javascript
128
128
let [x = 1 ] = [undefined ];
@@ -161,10 +161,10 @@ if ([1][0] === undefined) {
161
161
let [x = 1 , y = x] = []; // x=1; y=1
162
162
let [x = 1 , y = x] = [2 ]; // x=2; y=2
163
163
let [x = 1 , y = x] = [1 , 2 ]; // x=1; y=2
164
- let [x = y, y = 1 ] = []; // ReferenceError
164
+ let [x = y, y = 1 ] = []; // ReferenceError: y is not defined
165
165
```
166
166
167
- 上面最后一个表达式之所以会报错,是因为` x ` 用到默认值 ` y ` 时 ,` y ` 还没有声明。
167
+ 上面最后一个表达式之所以会报错,是因为` x ` 用 ` y ` 做默认值时 ,` y ` 还没有声明。
168
168
169
169
## 对象的解构赋值
170
170
@@ -310,7 +310,7 @@ var {x = 3} = {x: null};
310
310
x // null
311
311
```
312
312
313
- 上面代码中,如果 ` x ` 属性等于 ` null ` ,就不严格相等于 ` undefined ` ,导致默认值不会生效 。
313
+ 上面代码中,属性 ` x ` 等于 ` null ` ,因为 ` null ` 与 ` undefined ` 不严格相等,所以是个有效的赋值,导致默认值 ` 3 ` 不会生效 。
314
314
315
315
如果解构失败,变量的值等于` undefined ` 。
316
316
@@ -379,7 +379,7 @@ first // 1
379
379
last // 3
380
380
```
381
381
382
- 上面代码对数组进行对象解构。数组` arr ` 的` 0 ` 键对应的值是` 1 ` ,` [arr.length - 1] ` 就是` 2 ` 键,对应的值是` 3 ` 。方括号这种写法,属于“属性名表达式”, 参见《对象的扩展》一章。
382
+ 上面代码对数组进行对象解构。数组` arr ` 的` 0 ` 键对应的值是` 1 ` ,` [arr.length - 1] ` 就是` 2 ` 键,对应的值是` 3 ` 。方括号这种写法,属于“属性名表达式”( 参见《对象的扩展》一章) 。
383
383
384
384
## 字符串的解构赋值
385
385
0 commit comments