变量解构赋值用途很多
1.交换变量的值
[x,y] = [y,x];
2.从函数返回多个值
函数只能返回一个值,如果要返回多个值,只能把它们放在数组或对象里返回。有了解构赋值,取出这些值就非常方便了。
// 返回一个数组
function f(){
return [1,2,3];
}
var [a,b,c] = f();
// 返回一个对象
function f(){
return {foo:1, bar:2};
}
var {foo,bar} = f();
3.函数参数的定义
解构赋值可以方便地把一组参数和变量名对应起来
// 参数是一组有序的值
function f([x,y,z]){
...
}
f([1,2,3]);
// 参数是一组无次序的值
function f({x,y,z}){
...
}
f({z:3,y:2:x:1});
4.提取JSON数据
var jsonData = {id:42,status:"ok",data:[867,5309]};
let {id,status,data:number} = jsonData;
console.log(id,status,number); // 42,"ok",[867,5309]
5.遍历Map结构
任何部署了Iterator接口的对象,都可以用for..of
循环遍历。Map结构原生支持Iterator接口,配合变量的结构赋值,获取键名和赋值就非常方便。
var map = new Map();
map.set("first","hello");
map.set("second","world");
for(let [key,value] of map){
console.log(key+"=="+value);
}
// first==hello
// second==world
如果只想获取键名,或者只想获取键值,可以写成下面这样:
// 获取键名
for(let [key] of map){
// ...
}
// 获取键值
for(let [,value] of map){
// ...
}