解构: 从数组或对象中提取值,对变量进行赋值
解构赋值号的两边的格式需要相互对应,对应位置的数值类型也需要一致
let [a,b.[c]] = [1,2,[3]]
a==1
b==2
c==3
let [ar,...are] = [1,2,3,4]
ar==1
are==[2,3,4]
let [f,...h] = [1]
f==1
h==[]
解构不成功的值会返回undefined
解构数组是按照顺序进行解构赋值下去的,而解构对象的时候则会根据对象的名称进行赋值,比如
let {a,b} = {b:'alice',a:'sam'}
a==sam
b==alice
解构对象的时候,需要赋值的对象的名称一定要和赋值右面的是一直的,不然将会找不到该对象,得到undefined
解构对象的时候,如果对象的变量名和属性名不一致的时候,赋值的时候,变量名一定要写对,不然就会找不到这个值得到undefined,而我们赋予的值是给与属性名,变量名并不会得到赋值
let {obj:bo} = {obj:'alice'}
bo === alice
let {obj:bo,abj:ad} = { obj:'this'}
bo === this
ad === undefined
obj === undefined
对象的解构可以设置默认值
常见的解构用途:
1: 交换变量的值
let [a , b ] = [b, a]
2: 从函数中返回多个值
function fn(){
return [a,s,b]
}
var [a,b,c] = fn()
3: 给函数赋值
function fn([a,b,c]){
//函数执行方法
}
fn([1,2,3])
4: 获取json对象中的值
var obj = {
val:'zlic',
name:'anga'
age:23
}
let {val,name,age} = obj
5: 遍历map解构
var map = new Map()
map.set('first,'one')
map.set('second','two')
for(let [key,value] of map){
console.log(key+'-'+value
}
// first-one
// second-two
也可以单独的只循环其中的key或者value
6: 输入指定模块的方法
(一般在我们引用一些库的时候,我们可能只引用到其中的某个方法,此时我们便可以使用到解构,将其中一个方法解构获取出来,import导入和require导入方式都会有,我们需要用{} 包裹住解构获取到的方法