在使用jQuery的CoffeeScript中,以下语句有什么不同吗?
jQuery ($) ->
jQuery ->
$ - >
答案 0 :(得分:4)
第一个与其他两个不同,就像在纯JavaScript中一样。在那里,您使用全局名称“jQuery”为“DOM ready”事件注册事件处理程序,同时确保快捷方式$
链接到jQuery。其他两种样式不会这样做 - 因此,在事件处理程序的本地范围内,$
将具有它外面的任何值。
答案 1 :(得分:1)
重要的是要知道$(handler)
与$(document).ready(handler)
相同。您问题中的所有三个语句基本上都是为jQuery.ready
函数设置处理程序。
有了这个,jQuery会将一个变量传递给提供给ready
函数的处理程序,该函数是jQuery对象。因此,在您的第一个示例中,您的处理程序正好利用此功能,并且(重新)将$
设置为与jQuery
相同。你的处理程序不需要接受jQuery传递的变量,这就是为什么你的两个其他处理程序不接受任何参数的原因。
当有另一个全局使用$
的库(例如jQuery)时,通常只需要执行此操作。
答案 2 :(得分:1)
默认情况下,jQuery创建一个名为jQuery
的全局对象和一个名为$
的全局别名。也就是window.$ = window.jQuery
。这就是为什么您可能会看到引用两者的不同文档。某些其他图书馆也喜欢使用$
作为他们的名字。这就是jQuery提供noConflict mode的原因,它允许您将$
重置为之前的值。
为了给你一个简短的答案:除非你正在使用 $ ->
,否则你应该更喜欢 noConflict
。
这里,作为参考,是jQuery
函数的官方文档,当它被赋予函数作为参数时:http://api.jquery.com/jQuery/#jQuery3