解构赋值给我们一种新的变量赋值方式,主要可以利用数组解构赋值和对象解构赋值。
它的用途包括:交换变量值,提取函数返回值,函数参数定义,默认值设定等
// 函数参数定义
function demo ({a,b,c}) {
console.log(a) // 1
console.log(b) // 2
console.log(c) // 3
}
demo({a:1,b:2,c:3})
// 交换变量
var x = 1
var y = 2
var [x,y] = [y,x] //这里要写上var,否则x的值为undefined,y为1
console.log(x) // 2
console.log(y) // 1
// 设定参数默认值
function demo1({name="张三"}){ // 注意,参数是对象
console.log("姓名:"+name);
}
demo1({}); // 姓名:张三
// 提取函数的返回值
function demo2 () {
return {"name":"rose","age":"22"}
}
var {name,age} = demo2()
console.log(name) // rose
console.log(age) // age
注意,解构赋值的拷贝是浅拷贝,即如果一个键的值是复合类型的值(数组、对象、函数)、那么解构赋值拷贝的是这个值的引用,而不是这个值的副本。
let obj = { a: { b: 1 } };
let { ...x } = obj;
obj.a.b = 2;
x.a.b // 2