在带有jQuery的CoffeeScript中,以下语句有什么不同吗?
jQuery ($) ->
jQuery ->
$ - >
发布于 2012-08-23 03:03:48
第一个与其他两个不同,就像在普通的JavaScript中一样。在这里,您使用全局名称" jQuery“为"DOM ready”事件注册一个事件处理程序,同时确保快捷方式$
链接到jQuery。另外两种样式不能做到这一点--因此,在事件处理程序的本地作用域中,$
的值是外部的任何值。
发布于 2012-08-23 03:33:47
重要的是要知道,$(handler)
与$(document).ready(handler)
是一样的,问题中的所有三个语句基本上都是为jQuery.ready
函数设置一个处理程序。
这样,jQuery将向提供给ready
函数的处理程序传递一个变量,该处理程序是jQuery对象。因此,在您的第一个示例中,您的处理程序只是利用这一点,并(重新)将$
设置为与jQuery
相同。您的处理程序不需要接受jQuery传递的变量,这就是为什么您的另外两个处理程序不接受任何参数的原因。
通常,只有在存在全局使用$
的库(如jQuery )时,才需要执行此操作。
发布于 2012-08-23 04:16:33
默认情况下,jQuery会创建一个名为jQuery
的全局对象和一个名为$
的全局别名。这就是window.$ = window.jQuery
。这就是为什么您可能会看到不同的文档引用了这两种方法。某些其他库也喜欢使用$
作为它们的名称。这就是jQuery提供noConflict mode的原因,它允许您将$
重置为以前的值。
所以给你一个简短的答案:你应该更喜欢 $ ->
,除非你正在使用 noConflict
。
下面是在给定一个函数作为参数时关于jQuery
函数的官方文档,以供参考:http://api.jquery.com/jQuery/#jQuery3
https://stackoverflow.com/questions/12079669
复制相似问题