Javascript 为什么我们要将全球图书馆/参考文献本地化?

Javascript 为什么我们要将全球图书馆/参考文献本地化?,javascript,design-patterns,Javascript,Design Patterns,,变量可以传递到匿名包装器中,以本地化通常访问的全局变量,如窗口、文档和jQuery 如果这些都是全局可访问的,那么这种本地化有什么意义呢?如果我没有弄错的话,将变量传递到模块中进行本地化将产生更快的查找时间,因为它们在本地范围内 此外,它还确保$确实是jQuery库。它可以保护$不受其他用途的污染。我想说,它可以确保略快的查找速度,因为它在本地范围内,但缩小后的文件大小也更小。参数“窗口”和“文档”可以缩小,但不能缩小全局变量 $经常被其他库(原型)覆盖,因此这样它确保$指向传入的实际jQue

,变量可以传递到匿名包装器中,以本地化通常访问的全局变量,如窗口、文档和jQuery


如果这些都是全局可访问的,那么这种本地化有什么意义呢?

如果我没有弄错的话,将变量传递到模块中进行本地化将产生更快的查找时间,因为它们在本地范围内


此外,它还确保
$
确实是
jQuery
库。它可以保护
$
不受其他用途的污染。

我想说,它可以确保略快的查找速度,因为它在本地范围内,但缩小后的文件大小也更小。参数“窗口”和“文档”可以缩小,但不能缩小全局变量

$经常被其他库(原型)覆盖,因此这样它确保$指向传入的实际jQuery参数

请注意,有些人还添加了“undefined”参数,因为它在ECMAScript 3中是可变的(不再在ES5中)


请参阅jQuery样板文件的注释:

全局变量是已知的。将全局变量本地化可以最大限度地减少使用全局变量的缺点

这也与经济增长有关。例如:如果您有10个模块,并且希望其中一个模块使用jQuery的替代品,例如。如果您的所有模块都使用全局jQuery或$,则无法做到这一点


显式地公开依赖项也很好,这是通过这种本地化技术实现的。它增加了可读性并减少了耦合。

除了提供更好的缩小功能和避免名称冲突外,局部变量的查找速度要快得多:


hm,您想说在这种情况下jquery更快吗?至少对
$
标识符的查找“更快”。在这里,速度并不像保护
$
不受其他库污染那样重要。由于安全原因,此构造正在使用中。它在JQ插件中非常流行。想象一下,你创建了一个插件,但没有它将在哪里使用的信息,例如页面上有原型,如果你直接使用
$
,你肯定会有bug和错误,这就是为什么你在页面上提供Jquery作为全局对象,在参数中提供$作为缩写形式,并确保它是链接的jQueryTanks@贝吉
var module = (function (window, document, $) {
    // module stuff
})(window, document, jQuery);