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