ES2020可選鏈"?."
阿新 • • 發佈:2021-01-03
一、可選鏈是什麼
可選鏈?.
是一種訪問巢狀物件屬性的防錯誤方法。即使中間的屬性不存在,也不會出現錯誤。
二、為什麼要使用可選鏈
在很多情況下,我們需要取一個物件的子(孫)屬性,但有時會出現下面這種特例:
const a = {}; console.log(a.b.c); // Error!
a.b的值是undefined,所以再取c的值會報錯。之前,沒有可選鏈的時候,我們是怎麼防止這種errror呢?
console.log(a && a.b && a.b.c);
依次對整條路徑上的屬性使用 && 運算進行判斷,以確保所有節點是存在的,但是寫起來很麻煩。這時,如果使用可選鏈,寫法就會簡單一些。
console.log(a?.b?.c);
1. 可選鏈?.
前面部分如果是undefined
或者null
,它會停止運算並返回undefined
。
注意: ?.語法使其前面的值成為可選值,但不會對其後面的起作用。例如:
const a = {}; console.log(a?.b?.c); // undefined (b是undefined) const d = null; console.log(d.b?.c); // Error
2. ?.前的變數必須已宣告。
如果未宣告變數tomorrow,那麼tomorrow?.date
會觸發一個錯誤:
// ReferenceError: tomorrow is not definedtomorrow.date
so, ?.前面的變數必須要通過 var/const/let 進行宣告。
三、短路效應
正如上文所說