2013-08-19 81 views
2

檢查,如果簡單的變量定義變得更爲簡便myVar?檢查CoffeeScript中是否定義了嵌套屬性?

的問題是,有沒有在CoffeeScript的一個很好的方式來檢查,如果嵌套屬性定義?

例如

if property.p.p.p.p? 
    alert "Hello" 

拋出ReferenceError如果property.p.p.p(或property.p.p | property.p)沒有被定義。

這是我們必須遞歸檢查,還是有一個很好的功能?

回答

12
if property?.p?.p?.p?.p? 
    alert "Hello" 

做你想要的。

這相當於

var _ref, _ref1, _ref2; 

if ((typeof property !== "undefined" && property !== null ? (_ref = property.p) != null ? (_ref1 = _ref.p) != null ? (_ref2 = _ref1.p) != null ? _ref2.p : void 0 : void 0 : void 0 : void 0) != null) { 
    alert("Hello"); 
} 

在JS。

相關一塊文檔的:

的存在運營商的訪問變種?可以用來吸收一系列屬性中的空引用。使用它來代替點存取器。在基值可能爲空或未定義的情況下。如果所有的屬性都存在,那麼你會得到預期的結果,如果鏈中斷,返回undefined而不是TypeError,否則將會產生TypeError。

+0

這很漂亮!謝謝。 – ocodo

+0

這種事情是爲什麼咖啡標記是偉大的。 – jcollum

相關問題