ES6解构赋值

 

1、数组的解构赋值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
// 数组的解构赋值
 
// const arr = [1, 2, 3, 4];
// let [a, b, c, d] = arr;
 
// ------------------------------------------
 
// 更复杂的匹配规则
 
// const arr = ['a', 'b', ['c', 'd', ['e', 'f', 'g']]];
 
// const [ , b] = arr;
// const [ , , g] = ['e', 'f', 'g']
// const [ , , [ , , g]] = ['c', 'd', ['e', 'f', 'g']];
// const [ , , [ , , [ , , g]]] = arr;
 
// ------------------------------------------
 
// 扩展运算符  ...
 
// const arr1 = [1, 2, 3];
// const arr2 = ['a', 'b'];
// const arr3 = ['zz', 1];
// const arr4 = [...arr1, ...arr2, ...arr3];
 
// const arr = [1, 2, 3, 4, 5, 6];
// const [a, b, ...c] = arr;
 
// ------------------------------------------
 
// 默认值
 
// const arr = [1, null, undefined];
// const [a, b = 2, c, d = 'aaa'] = arr;
 
// ------------------------------------------
 
// 交换变量
 
// let a = 20;
// let b = 10;
 
// let temp;
 
// temp = a;
// a = b;
// b = temp;
 
// [a, b] = [b, a];
 
// ------------------------------------------
 
// 接收多个 函数返回值
 
// function getUserInfo(id) {
//   // .. ajax
 
//   return [
//     true,
//     {
//       name: '小明',
//       gender: '女',
//       id: id
//     },
//     '请求成功'
//   ];
// };
 
// const [status, data, msg] = getUserInfo(123);

2、对象的解构赋值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
// 对象的解构赋值
 
// const obj = {
//  saber: '阿尔托利亚',
//  archer: '卫宫'
// };
// const { saber, archer1 } = obj;
 
// ------------------------------------------
 
// 稍微复杂的解构条件
 
// const player = {
//  nickname: '感情的戏∫我没演技∆',
//  master: '东海龙王',
//  skill: [{
//      skillName: '龙吟',
//      mp: '100',
//      time: 6000
//  },{
//      skillName: '龙卷雨击',
//      mp: '400',
//      time: 3000
//  },{
//      skillName: '龙腾',
//      mp: '900',
//      time: 60000
//  }]
// };
 
// const { nickname } = player;
// const { master } = player;
// const { skill: [ skill1, { skillName }, { skillName: sklName } ] } = player;
 
// const { skill } = player;
// const [ skill1 ] = skill;
 
 
// ------------------------------------------
 
// 结合扩展运算符
 
// const obj = {
//  saber: '阿尔托利亚',
//  archer: '卫宫',
//  lancer: '瑟坦达'
// };
 
// const { saber, ...oth } = obj;
// const obj1 = {
//  archer: '卫宫',
//  lancer: '瑟坦达'
// }
 
// const obj = {
//  saber: '阿尔托利亚',
//  ...obj1,
// };
 
// ------------------------------------------
 
// 如何对已经申明了的变量进行对象的解构赋值
 
// let age;
// const obj = {
//  name: '小明',
//  age: 22
// };
 
// ({ age } = obj);
 
// ------------------------------------------
 
// 默认值
 
// let girlfriend = {
//  name: '小红',
//  age: undefined,
// };
 
// let { name, age = 24, hobby = ['学习'] } = girlfriend;
 
// ------------------------------------------
// ------------------------------------------
 
// 提取对象属性
 
// const { name, hobby: [ hobby1 ], hobby } = {
//  name: '小红',
//  hobby: ['学习']
// };
 
// ------------------------------------------
 
// 使用对象传入乱序的函数参数
 
// function AJAX({
//  url,
//  data,
//  type = 'get'
// }) {
//  // var type = option.type || 'get';
 
//  // console.log(option);
//  console.log(type);
// };
 
// AJAX({
//  data: {
//      a: 1
//  },
//  url: '/getinfo',
// });
 
// ------------------------------------------
 
// 获取多个 函数返回值
 
// function getUserInfo(uid) {
//  // ...ajax
 
//  return {
//      status: true,
//      data: {
//          name: '小红'
//      },
//      msg: '请求成功'
//  };
// };
 
// const { status, data, msg: message } = getUserInfo(123);
 
// ------------------------------------------

3、字符串的解构赋值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 字符串的结构赋值
const str = 'I am the bone of my sword'// 我是剑骨头
 
// const [ a, b ,c, ...oth ] = str;
 
// const [ ...spStr1 ] = str;
// const spStr2 = str.split('');
// const spStr3 = [ ...str ];
 
// ------------------------------------------
 
// 提取属性
 
// const { length, split } = str;

4、数值与布尔值的解构赋值

1
2
3
4
// 数值与布尔值的解构赋值
 
const { valueOf: vo } = 1;
const { toString: ts } = false;

5、函数参数的解构赋值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// 函数参数的解构赋值
 
// function swap([x, y]) {
//  return [y, x];
// };
 
// let arr = [1, 2];
// arr = swap(arr);
 
function Computer({
    cpu,
    memory,
    software = ['ie6'],
    OS = 'windows 3.5'
}) {
 
    console.log(cpu);
    console.log(memory);
    console.log(software);
    console.log(OS);
 
};
 
new Computer({
    memory: '128G',
    cpu: '80286',
    OS: 'windows 10'
});
01-23 01:11