js中?.、??、??=的用法

1、可選鏈?.?

javascript中如果一個值為null、undefined,而直接訪問。。。

會報?Uncaught TypeError: Cannot read properties of undefined 異常錯誤。


而在真實的項目中是會出現(xiàn)這種情況,有這個值就讀這個值,沒有這個值也不會報錯。

可能有的小伙伴會說用三木運算符、或者if判斷,但是這種也是可以的,但是在特定情況下會很復雜(如obj.data.person.name)

而.?則完美解決這個問題(obj?.data?.person?.name)。


?. 可以無限鏈下去,不論有多少屬性,只要有最后可以訪問到屬性,就會直接賦值最后的屬性值。否則當任何一個鏈出現(xiàn)問題,立刻停止,而后賦值undefined。

2、空值合并運算符??

?? 雙問號后面是默認值(可常量、可變量)。

在 ?? 前面沒有值得時候會默認 ?? 后邊的值(類似于三木運算符中的:后面賦值)。

let obj = {age: 0, name: '', sex: null};

obj.age ?? '111';?// 0

obj.name ?? '111';?// ''

obj.sex ?? '111';? ? ?// 111

obj.addr ?? '111';? ? ?// 111

空值合并運算符??

?? 出現(xiàn)null ,undefined值會后,合并默認值(??后面的值)。

3、空值賦值運算符??=

和空值合并運算符??類似(可常量、可變量)。

當??=左側(cè)的值為null、undefined的時候,會將右側(cè)的值賦值給左側(cè)變量。

let obj = {age: 0, name: '', sex: null, addr: undefined};

obj.age ??= '111';? ? ?// 0

obj.name ??= '111';? ? ?// ''

obj.sex ??= '111';? ? ?// 111

obj.addr ??= '111' ;? ? ?// 111


空值賦值運算符??=
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容