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

Why should I reference jQuery in a self contained function?

本文关键字:引用 jQuery 函数 包含 我应该 为什么      更新时间:2023-09-26
(function ($, undefined) {
    . . .
})(jQuery);

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

$传递给匿名函数可确保命名空间受到保护(即不与也使用 $ 快捷方式的其他库冲突)。

通常,undefined传递给函数以确保变量真正undefined。例如,请考虑以下代码执行:

undefined = '123';
if(myVar == undefined)
{
    // Will only ever execute if myVar == '123'
}

正如评论中所指出的,除非您正在编写插件或类似的东西,否则使用 jQuery(function($) { }) 可能是一种更好的方法,因为它可以保护$快捷方式并提供 DOMReady 事件,这意味着实现相同结果所需的代码更少。

如果需要检查undefined,您可能还需要考虑使用 $.noop()

$undefined的值可能会被后续代码更改,例如。 如果要混合多个 JS 库,或使用多个版本的库。 通过捕获您自己的$undefined副本,您可以防止这种情况。

(function ($, undefined) {
    . . .
})(jQuery);

这样,您就可以确定 $ 是函数中的 jQuery(无论您的脚本中有什么 jQuery)。它不会阻止你覆盖jQuery变量,所以只有在你真正需要它时才使用它(或者你正在创建一个插件并分发一个jquery插件)。

至于未定义,

它将强制未定义实际上是未定义的,因为未定义在某些js引擎中可以被覆盖。