Skip to content

Commit 9d75a91

Browse files
committed
feat(es6): 新增解构
1 parent 38cd2a3 commit 9d75a91

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed

src/deconstruction.js

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
//解构可以将对象的属性值绑定到任意数量的变量
2+
//解构可以用于对象、数组以及函数参数列表
3+
4+
//++++++++++++++++++++++++++++++++++++++++++++
5+
//对象解构
6+
var people = {
7+
name: 'song',
8+
nickname: 'coderfocus',
9+
metaData:{
10+
age: 25,
11+
gender: 'male'
12+
}
13+
}
14+
var name = people.name
15+
16+
//解构赋值
17+
var {name} = people
18+
console.log(name);
19+
20+
//同时解构多个属性
21+
var {name,nickname} = people
22+
console.log(name + '-' + nickname);
23+
24+
//解构别名
25+
var {name: lastname} = people
26+
console.log(lastname);
27+
28+
//解构深度结构
29+
var {metaData: {age} } = people
30+
console.log(age);
31+
32+
//解构不存在的属性返回 undefined
33+
var {boots} = people
34+
console.log(boots);
35+
36+
// 解构嵌套属性的父对象是null或者undefined,抛出异常
37+
// var {boots: {size}} = people
38+
39+
//默认值
40+
var {boots = {size:10}} = people
41+
console.log(boots);
42+
43+
//嵌套属性默认值
44+
var {metaData: {size = 10}} = people
45+
console.log(size);
46+
47+
//++++++++++++++++++++++++++++++++++++++++++++++++++
48+
//数组解构
49+
var coordinates = [12,-5]
50+
var [x,y] = coordinates
51+
console.log(x);
52+
console.log(y);
53+
54+
//跳过不需要的值
55+
var names = ['song','wen','jie']
56+
var [firstname, ,lastname] = names
57+
console.log(lastname);
58+
59+
//默认值
60+
var [firstname, , ,lastname = 'song'] = names
61+
console.log(lastname);
62+
63+
//利用数组解构交换变量值
64+
var left = 5;
65+
var right = 7;
66+
[left,right] = [right,left]
67+
console.log(left);
68+
console.log(right);

0 commit comments

Comments
 (0)