2012-08-22 94 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