ES6允许按照一定的模式,从数组和对象中提取值,对变量进行赋值,这被成为解构赋值。
1、数组的解构赋值
let [a,b,c] = [1,2,3];
上面的代码表示,可以从数组中提取值,按照对应位置,对变量赋值。
默认值:
解构赋值允许存在默认值
let [foo = true] = [];
foo // true
let [x,y = 'b'] = [x = 'a'];
// x = 'a' , y = 'b'
2、对象的解构赋值
let {bar,foo} = {bar:'aaa' , foo:'bbb'};
// bar = 'aaa' , foo = 'bbb'
对象的解构与数组有一个重要的不同。数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值。
let obj = {
a:1,
b:2,
c:3
}
let {a,b,c} = obj;
//a = 1 , b = 2 , c = 3;
3、字符串的解构赋值
字符串也可以解构赋值。这是因为,字符串被转换为一个类似数组的对象。
let [a,b,c,d,e] = 'hello';
a // 'h' b // 'e' c // 'l' d 'l' e 'o'
4、函数的解构赋值
函数的参数也可以使用解构赋值
function fun([a,b]){
console.log(a + b)
}
fun([1,2]);
函数的解构赋值也能使用默认值
5、解构赋值的用处
解构赋值对提取JSON对象中的数据,尤其有用
let jsonData = {
id:42,
status:'ok',
data:[123,456]
}
let { id,status,data:number } = jsonData;
console.log( id,status,number );
// 42,'ok',[123,456]