問號(?)的強大之處
點擊打開視頻講解更加詳細
一、問號點(?.)
obj: {
name: "末晨曦吖",
},
console.log(this.obj.age, "年齡"); //undefined
console.log(this.obj.hobby, "愛好"); //undefined
console.log(this.obj.age.data, "年齡"); //報錯
console.log(this.obj.hobby.data, "愛好"); //報錯
我們都知道第二個代碼中列印的年齡和愛好是會報錯的,因為我們在列印age和hobby時都已經是undefined的了,在undefined中有列印data屬性肯定是沒的了,也就報錯了,
那我們都怎么避免這中值為空的問題而引發報錯呢?
是的,我們可以使用前判斷是否為空,若不為空時,我們再去拿其中的某個屬性,
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屬性時,首先判斷前面的屬性不為空在去獲取,
這種方式呢我們用問號點也是可以實作的,
使用 (?.)實作判斷案例:
//this.obj.age?.data =https://www.cnblogs.com/mochenxiya/archive/2022/08/31/== this.obj.age && this.obj.age.data
console.log(this.obj.age?.data,"年齡"); //undefined
console.log(this.obj.hobby.hobbydata, "愛好"); //報錯
?.作用總結:
作用就是判斷這個物件(this.obj)下的(age)下的(data)是否為null或者undefined,當其中一鏈為null或者undefined時就回傳undefined,這樣即使中間缺少一個屬性也不會報錯,
二、問號問號(??)
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") //''
??作用總結:
使用方式就是與 或(||)相同用法,但是要注意的是??忽略0和空字串等錯誤的值
?. 與 ??聯合使用
let obj ={}
console.log(obj?.a?.b ?? 233 ) //233
let obj={a:{b:1}}
console.log(obj?.a?.b??233) //1
若對您有幫助,請點擊跳轉到B站一鍵三連哦!感謝支持!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/503311.html
標籤:其他
上一篇:慎用JSON.stringify
