真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

【面試題】js 問號(?)的強(qiáng)大之處,你知道嗎??

問號(?)的強(qiáng)大之處

點(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ù)解決您的所有建站問題。

一、問號點(diǎn)(?.)

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和空字符串等錯誤的值

?. 與 ??聯(lián)合使用

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站一鍵三連哦!感謝支持!??!


分享名稱:【面試題】js 問號(?)的強(qiáng)大之處,你知道嗎??
文章起源:http://weahome.cn/article/dsojgpd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部