ES6允许你按照一定的模式从数组或者对象中提取值,然后给变量赋值,这就是所谓的解构。只要等号两边的模式相同,左边的变量就会被赋予相应的值。这种写法属于“模式匹配”。统称为“解构作业”。
目录
数组解构赋值对象解构赋值应用交换变量值
从函数中返回多个值。
遍历地图结构
参数的解构和赋值
数组的解构赋值
设[a,b,c]=[1,2,3]
同时定义多个变量,A匹配1,B匹配2,C匹配3。
解构允许指定默认值,即左边的变量指定默认值,右边没有对应的值,那么会先输出默认值。
设[x,y=b]=[a] //x=a ,y=b
匹配字符A和Y的默认值是字符b,如果右边没有对应的字符,则默认输出字符b。
对象的解构赋值
解构不仅可以用于数组,也可以用于对象。对象解构和数组之间有一个重要的区别。数组的元素按顺序排列,变量的值由其位置决定。但是,对象的属性没有顺序,变量必须与属性同名才能获得正确的值。
让{
姓名,
年龄,
爱好:[一,二]
}={
姓名:“白马寺郎”,
年龄:21,
爱好:[骑马,动漫]
}
比如我取age的值,改成abc的值,它就是未定义的,因为它和对象中的属性名不对应,不能相应赋值。
解构赋值的应用
交换变量值
想办法正常交换变量值。
设x=1,
y=2,
温度=0
温度=x //x=1=温度
x=y //y=2=x
y=温度//温度=1=y
console.log(x=,x)
console.log(y=,y)
使用解构赋值来交换变量
设x=1;
设y=2;
[x,y]=[y,x];
console.log(x=,x)
console.log(y=,y)
这样交换变量x和y的值,不仅写法简洁,而且易读,语义非常清晰。
从函数中返回多个值。
函数只能返回一个值。如果要返回多个值,只能在数组或对象中返回。有了解构赋值,就变得更方便了。
提取爱好数组中的第二个值
函数getArray() {
返回{
姓名: kongsam ,
年龄:21,
爱好:[骑行,动漫,羽毛球]
}
}
Console.log(getArray()。名称“likes”get array()。爱好[1]) //动漫
使用解构赋值获得爱好数组中的第二个值
让{姓名,年龄,爱好}=getArray()
Console.log(name likes 爱好[1]) //动漫
遍历地图结构
为了.在循环遍历中,被遍历的值是一个数组,而解构赋值可以对数组进行“模式匹配”,这样可以快速取出键值。
为.具有解构赋值的循环遍历非常便于获得键值。
for (let [key,value] of map) {
console.log(key=,key)
console.log(value=,value)
}
函数参数的解构赋值//让{ x=10,y=5 }={}
函数f({ x=10,y=5 }={}) {
return [x,y]
}
console.log(f({ x: 100,y:50 })//[100,50]
console . log(f({ x:3 })//[3,5]
console . log(f({ })//[10,5]
console.log(f()) //[10,5]
您可以将对象传递给函数的参数,并且可以为传递的对象设置默认值。会被解构成函数来使用,你也可以这么理解。
函数f(x=10,y=5) {
return [x,y]
}
console.log(f(100,50)) //[100,50]
console.log(f(3)) //[3,5]
console.log(f()) //[10,5]
上面写的不一样,结果也会不一样。
函数f({ x,y }={ x: 10,y: 5 }) {
return [x,y]
}
console.log(f({ x: 100,y:50 })//[100,50]
console . log(f({ x:3 })//[3,未定义]
console . log(f({ })//[未定义,未定义]
console.log(f()) //[10,5]
第三次和第四次打印将没有定义。这是因为传入的X或Y与object属性中的值不对应,导致匹配失败。
以上是ES6解构作业原理及应用的详细内容。更多关于ES6解构作业的信息,请关注我们的其他相关文章!