天天看點

CoffeeScript 存在操作符“?” 詳解

在JavaScript中使用if來做null檢查是很常見的,但是其中有幾個陷阱,空字元串和零都被強制轉化為false,這往往會讓你犯錯。

if (typeof p !== "undefined" && p !== null) {  p.func();}      

CoffeeScript存在操作符?隻會在變量為null或者undefined的時候會傳回真,與Ruby的nil?類似。到了CoffeeScript中,上面的代碼直接被簡化成:

p?.func()      

意思就是變量p定義且被執行個體化過,則調用"func"方法,否則就不調用。

網絡上有說:存在操作符可以替換||操作符,這種觀點是不嚴格的,嚴格說是錯誤的

eg:

a = "123"

b = a || 30

alert b

說明:

    當a的值不為空時可以用?替換||,此時alert 為123

    如果a="",此時用?則alert為空(空白)  用|| alert為30

    如果上面的變量a删除  ?對應 alert為30  用||編譯報錯

如果你在通路屬性之前進行

null

檢查,你可以把存在操作符放在它左邊來跳過檢查。這與Actice Support的try方法比較類似。

blackKnight.getLegs()?.kick()      
blackKnight.getLegs().kick?()      

繼續閱讀