mirror of
https://github.com/ruanyf/es6tutorial.git
synced 2025-05-24 18:32:22 +00:00
修改destructuring
This commit is contained in:
parent
ddc4cd5d63
commit
2d74dbcde9
@ -144,6 +144,11 @@ baz // undefined
|
|||||||
var { foo: baz } = { foo: "aaa", bar: "bbb" };
|
var { foo: baz } = { foo: "aaa", bar: "bbb" };
|
||||||
baz // "aaa"
|
baz // "aaa"
|
||||||
|
|
||||||
|
let obj = { first: 'hello', last: 'world' };
|
||||||
|
let { first: f, last: l } = obj;
|
||||||
|
f // 'hello'
|
||||||
|
l // 'world'
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
和数组一样,解构也可以用于嵌套结构的对象。
|
和数组一样,解构也可以用于嵌套结构的对象。
|
||||||
@ -175,6 +180,40 @@ console.log(x, y) // 1, 5
|
|||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
对象解构可以与函数参数的默认值一起使用。
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
|
||||||
|
function move({x=0, y=0} = {}) {
|
||||||
|
return [x, y];
|
||||||
|
}
|
||||||
|
|
||||||
|
move({x: 3, y: 8}); // [3, 8]
|
||||||
|
move({x: 3}); // [3, 0]
|
||||||
|
move({}); // [0, 0]
|
||||||
|
move(); // [0, 0]
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
上面代码中,函数move的参数是一个对象,通过对这个对象进行解构,得到变量x和y的值。如果解构失败,x和y等于默认值。
|
||||||
|
|
||||||
|
注意,指定函数参数的默认值时,不能采用下面的写法。
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
|
||||||
|
function move({x, y} = { x: 0, y: 0 }) {
|
||||||
|
return [x, y];
|
||||||
|
}
|
||||||
|
|
||||||
|
move({x: 3, y: 8}); // [3, 8]
|
||||||
|
move({x: 3}); // [3, undefined]
|
||||||
|
move({}); // [undefined, undefined]
|
||||||
|
move(); // [0, 0]
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
上面代码是为函数move的参数指定默认值,而不是为变量x和y指定默认值,所以会得到与前一种写法不同的结果。
|
||||||
|
|
||||||
如果要将一个已经声明的变量用于解构赋值,必须非常小心。
|
如果要将一个已经声明的变量用于解构赋值,必须非常小心。
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
|
Loading…
x
Reference in New Issue
Block a user