1
0
mirror of https://github.com/ruanyf/es6tutorial.git synced 2025-05-24 18:32:22 +00:00

edit destructuring

This commit is contained in:
Ruan Yifeng 2015-04-24 05:18:20 +08:00
parent a426f09a92
commit a7c7c3ec57

View File

@ -28,15 +28,19 @@ var [a, b, c] = [1, 2, 3];
```javascript
var [foo, [[bar], baz]] = [1, [[2], 3]];
let [foo, [[bar], baz]] = [1, [[2], 3]];
foo // 1
bar // 2
baz // 3
var [,,third] = ["foo", "bar", "baz"];
let [,,third] = ["foo", "bar", "baz"];
third // "baz"
var [head, ...tail] = [1, 2, 3, 4];
let [x, , y] = [1, 2, 3];
x // 1
y // 3
let [head, ...tail] = [1, 2, 3, 4];
head // 1
tail // [2, 3, 4]
@ -55,16 +59,22 @@ var [bar, foo] = [1];
```
以上几种情况都属于解构不成功foo的值都会等于undefined。另一种情况是不完全解构。
以上几种情况都属于解构不成功foo的值都会等于undefined。
另一种情况是不完全解构,即等号左边的模式,只匹配一部分的等号右边的数组。这种情况下,解构依然可以成功。
```javascript
var [x, y] = [1, 2, 3];
let [x, y] = [1, 2, 3];
x // 1
y // 2
let [a, [b], d] = [1, [2, 3], 4];
a // 1
b // 2
d // 4
```
上面代码中x和y可以顺利取到值。
如果对undefined或null进行解构会报错。
```javascript
@ -155,14 +165,14 @@ l // 'world'
```javascript
var o = {
var obj = {
p: [
"Hello",
{ y: "World" }
]
};
var { p: [x, { y }] } = o;
var { p: [x, { y }] } = obj;
x // "Hello"
y // "World"
@ -260,7 +270,7 @@ let { log, sin, cos } = Math;
```
上面代码交换变量x和y的值这样的写法不仅简洁而且语义非常清晰。
上面代码交换变量x和y的值这样的写法不仅简洁而且易读,语义非常清晰。
**2从函数返回多个值**
@ -271,7 +281,7 @@ let { log, sin, cos } = Math;
// 返回一个数组
function example() {
return [1, 2, 3];
return [1, 2, 3];
}
var [a, b, c] = example();