(function ($, undefined) {
. . .
})(jQuery);
我到处都看到了这一点,但我不明白为什么我们将jQuery作为参数发送到自包含的函数中。 jQuery已被引用。另外,为什么我们将undefined
定义为参数?
答案 0 :(得分:16)
将$
传递给匿名函数可确保命名空间受到保护(即与其他同时使用$
快捷方式的库不冲突。)
通常会将undefined
传递给函数,以确保变量真正为undefined
。例如,请考虑以下代码exerpt:
undefined = '123';
if(myVar == undefined)
{
// Will only ever execute if myVar == '123'
}
正如评论中所述,除非您正在编写插件或其他类似内容,否则使用jQuery(function($) { })
可能是一种更好的方法,因为它可以保护$
快捷方式并提供DOMReady事件,意味着需要更少的代码来实现相同的结果。
如果您需要查看undefined
,您可能还需要考虑使用$.noop()
。
答案 1 :(得分:4)
$
或undefined
可能会通过后续代码更改其值,例如。如果您要混合多个JS库,或者使用多个版本的库。通过捕获您自己的$
和undefined
副本,您可以防范它。
答案 2 :(得分:0)
(function ($, undefined) {
. . .
})(jQuery);
你可以确定$是函数内部的jQuery(无论jQuery在你的脚本中)。 它不会阻止你覆盖jQuery变量,所以只有在你真正需要它时才使用它(或者你正在创建一个插件并分发一个jquery插件)。
对于undefined,它会强制undefined实际上是未定义的,因为在某些js引擎中可以覆盖undefined。