點(diǎn)擊打開視頻講解更加詳細(xì)
創(chuàng)新互聯(lián)公司成立與2013年,先為灌云等服務(wù)建站,灌云等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為灌云企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
obj: {
name: "末晨曦吖",
},
console.log(this.obj.age, "年齡"); //undefined
console.log(this.obj.hobby, "愛好"); //undefined
console.log(this.obj.age.data, "年齡"); //報(bào)錯
console.log(this.obj.hobby.data, "愛好"); //報(bào)錯
我們都知道第二個代碼中打印的年齡和愛好是會報(bào)錯的,因?yàn)槲覀冊诖蛴ge和hobby時都已經(jīng)是undefined的了,在undefined中有打印data屬性肯定是沒的了,也就報(bào)錯了。
那我們都怎么避免這中值為空的問題而引發(fā)報(bào)錯呢?
是的,我們可以使用前判斷是否為空,若不為空時,我們再去拿其中的某個屬性。
console.log(this.obj.age && this.obj.age.data, "年齡", this.obj.age.data);
console.log(this.obj.hobby && this.obj.hobby.data,"愛好",this.obj.hobby.data);
在代碼中可以知道,我們在獲取data屬性時,首先判斷前面的屬性不為空在去獲取。
這種方式呢我們用問號點(diǎn)也是可以實(shí)現(xiàn)的。
使用 (?.)實(shí)現(xiàn)判斷案例:
//this.obj.age?.data === this.obj.age && this.obj.age.data
console.log(this.obj.age?.data, "年齡"); //undefined
console.log(this.obj.hobby.hobbydata, "愛好"); //報(bào)錯
?.作用總結(jié):
作用就是判斷這個對象(this.obj)下的(age)下的(data)是否為null或者undefined,當(dāng)其中一鏈為null或者undefined時就返回undefined,這樣即使中間缺少一個屬性也不會報(bào)錯。
console.log(1 || "xx") //1
console.log(0 || "xx") //xx
console.log(null || "xx") //xx
console.log(undefined || "xx") //xx
console.log(-1 || "xx") //-1
console.log("" || "xx") //xx
console.log(1 ?? "xx") //1
console.log(0 ?? "xx") //0
console.log(null ?? "xx") //xx
console.log(undefined ?? "xx") //xx
console.log(-1 ?? "xx") //-1
console.log("" ?? "xx") //''
??作用總結(jié):
使用方式就是與 或(||)相同用法,但是要注意的是??忽略0和空字符串等錯誤的值
let obj ={}
console.log(obj?.a?.b ?? 233 ) //233
let obj={a:{b:1}}
console.log(obj?.a?.b??233) //1
若對您有幫助,請點(diǎn)擊跳轉(zhuǎn)到B站一鍵三連哦!感謝支持!??!