解构赋值是什么?
就是从数组或者对象中取出部分成员的方法。
顾名思义就是先解构数组或者对象,再将解构出来的部分成员赋值。
一、数组解构赋值
let arr = ['a', 'b', 'c', 'd', 'e'];
let [f, g, h, i, j] = arr;//这段为解构赋值
console.log(f, g, h, i, j);
控制台结果:
我们也可以对数组进行部分解构赋值:
let arr = ['a', 'b', 'c', 'd', 'e'];
let [f, g] = arr;//这段为解构赋值
console.log(f, g);
这里解构赋值的结果就是按arr数组的顺序来的
二、对象解构赋值
let obj = {
name: 'zs',
age: 18,
from: 'china'
}
let { name, age, from } = obj;
console.log(name, age, from);
这里解构赋值的结果和数组一样按顺序来的,只不过数组要用[],对象要用{}。
但是我们可不可以不用原来对象,即这里的obj中的键名,进行解构赋值呢?
let obj = {
name: 'zs',
age: 18,
from: 'china'
}
let { a, age, c} = obj;
console.log(a, age, c);
答案是不行。
那如果我们不想用原来的key名来接受这个值该怎么办呢?
我们可以起别名
let obj = {
name: 'zs',
age: 18,
from: 'china'
}
let { name:a, age, from:c} = obj;
console.log(a, age, c);
像这样我们就可以用我们想要的key名来接受这个值啦
三、字符串解构赋值
let str = 'hello';
let [a, b, c, d, e] = str;
let [f, g] = str;
console.log(a, b, c, d, e);
console.log(f, g);
是不是跟数组解构赋值很像?
四、变量值交换(很实用)
常规的交换两个变量值:
let a = 1;
let b = 2;
let tmp = a;
a = b;
b = tmp;
console.log(a, b);
缺点:代码量多,很麻烦,而且需要创建新变量暂存值。
解构赋值交换:
let a = 1;
let b = 2;
[a, b] = [b, a];
console.log(a, b);
一行代码轻松搞定。
五、有关函数形参的一些解构赋值操作
function foo([x, y, z]) {
console.log(x, y, z);
}
foo([1, 2, 3])
但你要用数组里的一些值作为变量的时候还是有点用的。