mirror of
https://github.com/ruanyf/es6tutorial.git
synced 2025-05-24 18:32:22 +00:00
docs(object): edit spread operator
This commit is contained in:
parent
7397a7ad6a
commit
52bca44c4c
@ -488,8 +488,8 @@ let { x, y, ...z } = undefined; // 运行时错误
|
|||||||
解构赋值必须是最后一个参数,否则会报错。
|
解构赋值必须是最后一个参数,否则会报错。
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
let { ...x, y, z } = obj; // 句法错误
|
let { ...x, y, z } = someObject; // 句法错误
|
||||||
let { x, ...y, ...z } = obj; // 句法错误
|
let { x, ...y, ...z } = someObject; // 句法错误
|
||||||
```
|
```
|
||||||
|
|
||||||
上面代码中,解构赋值不是最后一个参数,所以会报错。
|
上面代码中,解构赋值不是最后一个参数,所以会报错。
|
||||||
@ -571,6 +571,42 @@ foo
|
|||||||
// {0: "a", 1: "b", 2: "c"}
|
// {0: "a", 1: "b", 2: "c"}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
如果扩展运算符后面是一个空对象,则没有任何效果。
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
{...{}, a: 1}
|
||||||
|
// { a: 1 }
|
||||||
|
```
|
||||||
|
|
||||||
|
如果扩展运算符后面不是对象,则会自动将其转为对象。
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
// 等同于 {...Object(1)}
|
||||||
|
{...1} // {}
|
||||||
|
```
|
||||||
|
|
||||||
|
上面代码中,扩展运算符后面是整数`1`,会自动转为数值的包装对象`Number{1}`。由于该对象没有自身属性,所以返回一个空对象。
|
||||||
|
|
||||||
|
下面的例子都是类似的道理。
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
// 等同于 {...Object(true)}
|
||||||
|
{...true} // {}
|
||||||
|
|
||||||
|
// 等同于 {...Object(undefined)}
|
||||||
|
{...undefined} // {}
|
||||||
|
|
||||||
|
// 等同于 {...Object(null)}
|
||||||
|
{...null} // {}
|
||||||
|
```
|
||||||
|
|
||||||
|
但是,如果扩展运算符后面是字符串,它会自动转成一个类似数组的对象,因此返回的不是空对象。
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
{...'hello'}
|
||||||
|
// {0: "h", 1: "e", 2: "l", 3: "l", 4: "o"}
|
||||||
|
```
|
||||||
|
|
||||||
对象的扩展运算符等同于使用`Object.assign()`方法。
|
对象的扩展运算符等同于使用`Object.assign()`方法。
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
@ -655,19 +691,6 @@ const obj = {
|
|||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
如果扩展运算符后面是一个空对象,则没有任何效果。
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
{...{}, a: 1}
|
|
||||||
// { a: 1 }
|
|
||||||
```
|
|
||||||
|
|
||||||
如果扩展运算符的参数是`null`或`undefined`,这两个值会被忽略,不会报错。
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
let emptyObject = { ...null, ...undefined }; // 不报错
|
|
||||||
```
|
|
||||||
|
|
||||||
扩展运算符的参数对象之中,如果有取值函数`get`,这个函数是会执行的。
|
扩展运算符的参数对象之中,如果有取值函数`get`,这个函数是会执行的。
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
|
Loading…
x
Reference in New Issue
Block a user