2012-08-22 187 views
2

在使用jQuery的CoffeeScript中,以下語句是否有區別?

jQuery ($) -> 
jQuery -> 
$ - > 

回答

4

第一個與另外兩個不同,就像在普通的JavaScript中一樣。在那裏,您使用全局名稱「jQuery」爲「DOM ready」事件註冊事件處理程序,同時確保快捷方式$已鏈接到jQuery。其他兩種風格不這樣做 - 因此,在事件處理程序的本地範圍內,$將具有任何外部價值。

1

重要的是要知道$(handler)是一樣的$(document).ready(handler)在你的問題中的所有三個語句基本上設置爲jQuery.ready函數處理程序。

因爲這樣,jQuery將傳遞一個變量給提供給ready函數的處理函數,它是jQuery對象。所以在你的第一個例子中,你正在利用這個和(重新)設置$jQuery相同。你的處理程序不需要接受jQuery傳遞的變量,這就是爲什麼你的兩個其他處理程序不接受任何參數是可以的。

您通常只需要在全局使用$的另一個庫(如jQuery)時執行此操作。

1

默認情況下,jQuery創建名爲jQuery的全局對象和名爲$的全局別名。那就是window.$ = window.jQuery。這就是爲什麼你可能會看到不同的文檔引用這兩個。某些其他圖書館也喜歡使用$作爲他們的名字。這就是jQuery提供noConflict mode的原因,它允許您將$重置爲之前的值。除非你使用noConflict你應該更喜歡$ ->

所以給你一個簡單的答案。

在這裏,以供參考,是對jQuery功能的官方文檔時,它給一個函數作爲參數:http://api.jquery.com/jQuery/#jQuery3