2012-07-19 51 views
1

考慮下面的CoffeeScript:CoffeeScript - 這個奇怪的「返回」事件是什麼意思?

$ -> 
    if localStorage["Flag1"] isnt "Done" 
    localStorage["Flag1"] = "Done" # Flagged on first page loading 
    $(".start").click -> 
    if localStorage["Flag2"] isnt "Done" 
     localStorage["Flag2"] = "Done" # Flagged on first click interaction 

哪個編譯成:

$(function() { 
    if (localStorage["Flag1"] !== "Done") { 
    localStorage["Flag1"] = "Done"; 
    } 
    return $(".start").click(function() { 
    if (localStorage["Flag2"] !== "Done") { 
     return localStorage["Flag2"] = "Done"; 
    } 
    }); 
}); 

有 「迴歸」 兩個陌生的發生是種植在渲染JavaScript的。他們做什麼,他們將如何影響腳本的運行?謝謝!

回答

2

它們不會影響腳本的運行。第一個return將從DOM就緒事件處理程序返回$(".start")(因爲jQuery click方法返回jQuery的一個實例)。由於這是一個回調,它在某個時刻運行,所以你不能對這個回報值做任何事情。

第二return將返回"Done",設置localStorage財產之後,但同樣的,因爲它是從回調返回(單擊事件處理這個時候),你將無法使用返回值做任何事情。

我相信CoffeeScript將return每個函數中最後一個表達式的值,這就是爲什麼您在輸出中看到這些return語句的原因。從文檔:

即使函數總是返回他們的最終價值,這既是 可能和鼓勵,當你知道你是從一個函數體寫 出明確的回報(return value),提前返回 完成。

+0

http://coffeescript.org/#expressions – 2012-07-19 07:14:48

相關問題