我该怎么样生活?这个问题不仅是人生道路之初的问题,更是贯穿人一生的问题。 —— 陈嘉映《何为良好生活》
Syntax 句法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18var a,b,rest;
[a,b]=[10,20];
console.log(a); //10
console.log(b); //20
[a,b,...rest] = [10,20,30,40,50];
console.log(a); //10
console.log(b); //20
console.log(rest); //[30,40,50]
({a,b} = {a:10,b:20});
console.log(a); //10
console.log(b); //20
({a,b,...rest}={a:10,b:20,c:30,d:40});
console.log(a); //10
console.log(b); //20
console.log(..rest); //{c:30,d:40}解构赋值 使用同样的语法,但是在赋值的左边定义了从源变量解开什么值
1
2
3
4var x=[1,2,3,4,5];
var [y,z] = x;
console.log(y); //1
console.log(z); //2
数组解构 Array destructuring
基本变量赋值 Basic variable assignment
1
2
3
4
5var foo =['one','two','three'];
var [x,y,z] = foo;
console.log(x); //"one"
console.log(y); //"two"
console.log(z); //"three"通过声明各自赋值
变量可以通过独立于变量声明的解构来赋值1
2
3
4var a,b;
[a,b]= [1,2];
console.log(a); //1
console.log(b); //2默认值
如果没有定义从数组中解压的值,则变量可以被赋默认值1
2
3
4var a,b;
[a=5,b=7] = [1];
console.log(a); //1
console.log(b); //7 —— 默认值交换变量
两个变量值可以在一个解构表达式中交换1
2
3
4var a=10,b=20;
[a,b] = [b,a];
console.log(a); //20
console.log(b); //10解析从函数中返回的数组
解构可以使数组返回值更简洁1
2
3
4
5
6
7function f(){
return [1,2]
}
var a,b;
[a,b] = f();
console.log(a); //1
console.log(b); //2忽略一些返回值
1
2
3
4
5
6function f(){
return [1,2,3];
}
var a[a,,b]=f();
console.log(a); //1
console.log(b); //3将数组的其余部分分布给一个变量
1
2
3var [a,...b] = [1,2,3];
console.log(a); //1
console.oog(b); //[2,3]解开正则表达式匹配的值