ES6 解構(gòu)賦值
let obj1 = {
account:{
sale: null
}
}
let obj3 = {
account:{
sale: undefined
}
}
let obj3 = {
account:{
sale: {
name: 'zhangsan'
}
}
}
上面三種數(shù)據(jù)結(jié)構(gòu)
obj1
&&obj3
是后臺(tái)返回形式.obj1
let { account: { sale: { name = 'mixj' } = {} } } = obj1
這個(gè)會(huì)報(bào)錯(cuò),
1.理想狀態(tài)是sale不存在就要賦值一個(gè)空對(duì)象,
2.從空 sale 中找 name,
3.如果name 不存在,賦值 'mixj'.
因?yàn)?sale 為 null 不是 undefined,所以第一步就失敗了,然后對(duì)一個(gè) null 對(duì)象進(jìn)行解構(gòu).就會(huì)報(bào)錯(cuò)
* 當(dāng)沒(méi)有該屬性或者該屬性為 undefined 才會(huì)賦值
* 對(duì)一個(gè) null||undefined解構(gòu)會(huì)導(dǎo)致程序拋出錯(cuò)誤
- obj2
let { account: { sale: { name = 'mixj' } = {} } } = obj2
1.理想狀態(tài)是sale不存在就要賦值一個(gè)空對(duì)象,
2.從空 sale 中找 name,
3.如果name 不存在,賦值 'mixj'.
log(name) ==> 'mixj'
- obj3
let { account: { sale: { name = 'mixj' } = {} } } = obj3
1.理想狀態(tài)是sale不存在就要賦值一個(gè)空對(duì)象,
2.從空 sale 中找 name,
3.如果name 不存在,賦值 'mixj'.
log(name) ==> 'zhangsan'