ES6允许我们按照一定的模式从数组和对象中提取值并赋值给变量,这个方式叫解构赋值。对我们提高效率有很大的帮助,以下,就谈谈对解构赋值的大致使用。
对数组进行结构赋值
以往我们批量进行赋值时总要写很多行:
// 以往的赋值
let x = 1;
let y = 2;但是当我们用到解构赋值时,我们可以这样写:
// 解构赋值
let [x, y] = [1, 2]这让我们节省了一些代码量,当然不止这样的用法。
在面试的时候我就遇到这样的面试题,如何一行代码,交换两个变量的值,这时候解构赋值就有了用处:
// 一条代码交换 x, y 的值
let x = 1;
let y = 2;
[x, y] = [y,x]; // x, y的值发生了交换
console.log(x,y)了解上面的简单的用法,现在了解一点更复杂的。
现有一个数组,获取下标为0的元素,并将剩下的元素赋值给一个新数组。
以往我们碰到这样的问题,我们会将数组为0的元素获取到,然后使用slice方法获取新数组。如下:
let arr = [1,2,3,4,5,6,7];
let arrOne = arr[0];
let newArr = arr.slice(1,arr.length)
console.log(newArr,arrOne)但是有了赋值结构以后,我们可以进行如下操作:
let arr = [1,2,3,4,5,6,7];
let [arrOne, ...newArr] = arr;
console.log(newArr,arrOne)一行代码,就可以解决这个问题!!!剩下还有很多用法,大家可以自由探索。
注意:在解构赋值时,在没有匹配值的情况下,会为undefined。以上写法对其他类型的值进行结构时会报错。对对象进行解构赋值
与数组相似,对象的结构赋值,可以令我们获取该对象的值。
let obj = {
name: "骑着单车的人",
age: 18
}
let {name, age} = obj你可能想说,你不想让变量名和对象的属性名一致,我们可以这样写:
let {name: username, age: userage} = obj解构赋值没有匹配到情况下会赋值
undefined,为了避免出现这样的情况,ES6允许我们设置默认值:let obj = {
name: "骑着单车的人",
age: 18
}
let {name, age, sex = "男"} = obj其他用法
提取后端返回的JSON中的信息
let json = {
code: 200,
data: [],
msg: '获取成功'
}
let {code, data, msg} = json当我们需要使用模块中的方法时
import {mapState, mapActions} from 'vuex' // 使用VueX提供的辅助方法