- …变量,变量将来是数组,存放剩余的数据
function test([a,b,c,d,{username:user}],...e){
console.log(a,b,c,d,user,e);
}
test([1,2,3,4,{username:'zhangsan'}],5,6,7,8);//1 2 3 4 zhangsan [5,6,7,8]
…变量是用来匹配多出数据的,如上代码,a,b,c,d,username(重命名为user) , 这5个变量均有值与其匹配 , 到最后的…e时还剩下4个数值 , 所以e变量将4个数值以数组方式存储,并为自己赋值.
想要解构赋值左右两边的模式必须一样
let{ username } = null;//报错
2. 常见用途
//变量交换
let x = 1,y = 2;
[x,y] = [y,x];
console.log(x,y); //2 1
// 函数返回多个值
function test(){
return {
username:'张三',
age:12
}
}
let {username:a, age:b } = test();
console.log(a,b); //张三 12
扩展运算符 可以将后面的字符串转成数组
let arr = […‘hello’];
console.log(arr); // [h,e,l,l,o]
…复制数组 地址不一样
let arr2 = [1,2,3,4,5];
let arr3 = [...arr2];
console.log(arr2,arr3,arr2 === arr3); // [1,2,3,4,5] [1,2,3,4,5] false 但是储存的地址不一样
//修改其中的一个,另一个不变
arr3[2] =100;
console.log(arr2[2],arr3[3]); //3 100