为什么我应该在自包含函数中引用jQuery?

时间:2014-04-01 19:23:40

标签: javascript jquery

(function ($, undefined) {

    . . .

})(jQuery);

我到处都看到了这一点,但我不明白为什么我们将jQuery作为参数发送到自包含的函数中。 jQuery已被引用。另外,为什么我们将undefined定义为参数?

3 个答案:

答案 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。