概述
解构赋值是对赋值运算符的扩展。
他是一种针对数组或者对象进行模式匹配,然后对其中的变量进行赋值。
在代码书写上简洁且易读,语义更加清晰明了;也方便了复杂对象中数据字段获取。
解构赋值:允许将相同结构的值赋值给变量(模式匹配,=左右两侧模式相同才能解构,否则解构失败,变量值为undefined)
1. 数组解构赋值: [value,value,value,...]
有数组:[1,2,3,4,5],需要定义变量a,b,c,d,e来接收数组元素的值。
let arr = [1, 2, 3, 4, 5];
// ES5
// let a = arr[0],
// b = arr[1],
// c = arr[2],
// d = arr[3],
// e = arr[4];
// ES6 数组解构
let [f,b,e,d,c] = arr;
console.log(f,b,c,d,e);
// let [a,b,[c,d],e] = [1,2,[3],4,5];
// console.log(a,b,c,d,e);
2. 对象解构: {key:value,key:value,...}
// 对象的解构
const zhao = {
name: '赵本山',
age: '不详',
xiaopin: function() {
console.log("我可以演小品");
}
};
// let{name,age,xiaopin}=zhao;
// console.log(name);
// console.log(age);
// console.log(xiaopin);
// xiaopin();
// let{xiaopin,name,age}=zhao;
console.log(zhao.name, zhao.age);
zhao.xiaopin()
// xiaopin();
// console.log(name);
// 用途:
{
// 1. 快速交换变量的值
let arr = [33,7,19,99,0,5,13];
for (var i = 0; i < arr.length - 1; i++) {
for (var j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
// var tmp = arr[j];
// arr[j] = arr[j + 1];
// arr[j + 1] = tmp;
[arr[j+1],arr[j]] = [arr[j],arr[j+1]];
}
}
}
console.log(arr);
}