CoffeeScript 存在操作符“?” 詳解

來源:互聯網
上載者:User

標籤:詳解   coffeescript   存在操作符   

在JavaScript中使用if來做null檢查是很常見的,但是其中有幾個陷阱,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?()


本文出自 “日食先生” 部落格,請務必保留此出處http://issac.blog.51cto.com/1801082/1564500

CoffeeScript 存在操作符“?” 詳解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.