在使用jQuery的CoffeeScript中,以下語句是否有區別?
jQuery ($) ->
jQuery ->
$ - >
在使用jQuery的CoffeeScript中,以下語句是否有區別?
jQuery ($) ->
jQuery ->
$ - >
第一個與另外兩個不同,就像在普通的JavaScript中一樣。在那裏,您使用全局名稱「jQuery」爲「DOM ready」事件註冊事件處理程序,同時確保快捷方式$
已鏈接到jQuery。其他兩種風格不這樣做 - 因此,在事件處理程序的本地範圍內,$
將具有任何外部價值。
重要的是要知道$(handler)
是一樣的$(document).ready(handler)
在你的問題中的所有三個語句基本上設置爲jQuery.ready
函數處理程序。
因爲這樣,jQuery將傳遞一個變量給提供給ready
函數的處理函數,它是jQuery對象。所以在你的第一個例子中,你正在利用這個和(重新)設置$
與jQuery
相同。你的處理程序不需要接受jQuery傳遞的變量,這就是爲什麼你的兩個其他處理程序不接受任何參數是可以的。
您通常只需要在全局使用$
的另一個庫(如jQuery)時執行此操作。
默認情況下,jQuery創建名爲jQuery
的全局對象和名爲$
的全局別名。那就是window.$ = window.jQuery
。這就是爲什麼你可能會看到不同的文檔引用這兩個。某些其他圖書館也喜歡使用$
作爲他們的名字。這就是jQuery提供noConflict mode的原因,它允許您將$
重置爲之前的值。除非你使用noConflict
你應該更喜歡$ ->
:
所以給你一個簡單的答案。
在這裏,以供參考,是對jQuery
功能的官方文檔時,它給一個函數作爲參數:http://api.jquery.com/jQuery/#jQuery3