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
