0

为了避免 JavaScript 代码中的全局变量,我多次看到人们使用这种结构:

(function($) {
    // here code
    // here code
})(jQuery);

所以我有问题:为什么我们需要将函数参数声明为$以及为什么我们需要将jQuery对象作为参数传递?

4

2 回答 2

1

你不必。您可以随意命名函数参数。这只是使用 jQuery 的人的常见/最佳实践,因为通常使用 $ 作为 jQuery 库对象的别名。

您应该这样做的原因是因为还有其他库使用 $ 作为其库对象的别名。需要避免与这些库发生冲突,因为函数闭包将确保 $ 成为包装函数内的 jQuery 对象。

这是一个例子:

(function (myJqueryAlias) {
     console.log(myJqueryAlias('document') === jQuery('document'));
})(jQuery);
于 2013-09-02T11:50:33.517 回答
0

有了这个,你归档在这个块中你仍然有 $ 作为 jQuery,你仍然可以写像 "$("selector")" 而不是 "jQuery("selector")" 的东西。在这个块之外,变量 $ 仍然是它应该是的(例如,您使用另一个也使用 $ 的 JSLib)

于 2013-09-02T11:50:24.183 回答