mirror of
https://github.com/ruanyf/es6tutorial.git
synced 2025-05-25 03:02:21 +00:00
Merge branch 'gh-pages' of github.com:ruanyf/es6tutorial into gh-pages
This commit is contained in:
commit
b9e9f4e5b4
@ -122,7 +122,7 @@ let [x, y = 'b'] = ['a']; // x='a', y='b'
|
||||
let [x, y = 'b'] = ['a', undefined]; // x='a', y='b'
|
||||
```
|
||||
|
||||
注意,ES6 内部使用严格相等运算符(`===`),判断一个位置是否有值。所以,如果一个数组成员不严格等于`undefined`,默认值是不会生效的。
|
||||
注意,ES6 内部使用严格相等运算符(`===`),判断一个位置是否有值。所以,只有当一个数组成员严格等于`undefined`,默认值才会生效。
|
||||
|
||||
```javascript
|
||||
let [x = 1] = [undefined];
|
||||
@ -161,10 +161,10 @@ if ([1][0] === undefined) {
|
||||
let [x = 1, y = x] = []; // x=1; y=1
|
||||
let [x = 1, y = x] = [2]; // x=2; y=2
|
||||
let [x = 1, y = x] = [1, 2]; // x=1; y=2
|
||||
let [x = y, y = 1] = []; // ReferenceError
|
||||
let [x = y, y = 1] = []; // ReferenceError: y is not defined
|
||||
```
|
||||
|
||||
上面最后一个表达式之所以会报错,是因为`x`用到默认值`y`时,`y`还没有声明。
|
||||
上面最后一个表达式之所以会报错,是因为`x`用`y`做默认值时,`y`还没有声明。
|
||||
|
||||
## 对象的解构赋值
|
||||
|
||||
@ -310,7 +310,7 @@ var {x = 3} = {x: null};
|
||||
x // null
|
||||
```
|
||||
|
||||
上面代码中,如果`x`属性等于`null`,就不严格相等于`undefined`,导致默认值不会生效。
|
||||
上面代码中,属性`x`等于`null`,因为`null`与`undefined`不严格相等,所以是个有效的赋值,导致默认值`3`不会生效。
|
||||
|
||||
如果解构失败,变量的值等于`undefined`。
|
||||
|
||||
@ -379,7 +379,7 @@ first // 1
|
||||
last // 3
|
||||
```
|
||||
|
||||
上面代码对数组进行对象解构。数组`arr`的`0`键对应的值是`1`,`[arr.length - 1]`就是`2`键,对应的值是`3`。方括号这种写法,属于“属性名表达式”,参见《对象的扩展》一章。
|
||||
上面代码对数组进行对象解构。数组`arr`的`0`键对应的值是`1`,`[arr.length - 1]`就是`2`键,对应的值是`3`。方括号这种写法,属于“属性名表达式”(参见《对象的扩展》一章)。
|
||||
|
||||
## 字符串的解构赋值
|
||||
|
||||
|
@ -390,7 +390,7 @@ import {crc32} from 'crc32'; // 输入
|
||||
|
||||
上面代码的两组写法,第一组是使用`export default`时,对应的`import`语句不需要使用大括号;第二组是不使用`export default`时,对应的`import`语句需要使用大括号。
|
||||
|
||||
`export default`命令用于指定模块的默认输出。显然,一个模块只能有一个默认输出,因此`export default`命令只能使用一次。所以,`import`命令后面才不用加大括号,因为只可能对应一个方法。
|
||||
`export default`命令用于指定模块的默认输出。显然,一个模块只能有一个默认输出,因此`export default`命令只能使用一次。所以,import命令后面才不用加大括号,因为只可能唯一对应`export default`命令。
|
||||
|
||||
本质上,`export default`就是输出一个叫做`default`的变量或方法,然后系统允许你为它取任意名字。所以,下面的写法是有效的。
|
||||
|
||||
@ -425,7 +425,7 @@ export default var a = 1;
|
||||
|
||||
上面代码中,`export default a`的含义是将变量`a`的值赋给变量`default`。所以,最后一种写法会报错。
|
||||
|
||||
同样地,因为`export default`本质是将该命令后面的值,赋给`default`变量以后再默认,所以直接将一个值写在`export default`之后。
|
||||
同样地,因为`export default`命令的本质是将后面的值,赋给`default`变量,所以可以直接将一个值写在`export default`之后。
|
||||
|
||||
```javascript
|
||||
// 正确
|
||||
|
Loading…
x
Reference in New Issue
Block a user