【发布时间】:2011-10-15 12:08:16
【问题描述】:
我只是注意到 jQuery 源代码的库包装技术发生了一些变化。我记得在 1.4 版中,他们使用了这个库包装:
(function(...){
var jQuery = function(){
// some code
}
// other code
})(...);
现在在 1.6.x 中:
(function(...){
var jQuery = (function(){
var jQuery = function(){
// some code
}
// other code
return jQuery;
})();
})(...);
只是想一想,有没有人碰巧知道这种变化(包装技术)的好处是什么?
【问题讨论】:
-
这让我很困惑。您刚刚发布了闭包的开始。
-
什么闭包?它只是那里的局部变量...你可以在 jQuery 源代码中看到那些...虽然我没有发布整个代码,我现在只想了解它改变库包装技术的好处...
-
第一个
var jQuery基本上可以让你拥有私有变量。我假设除非你调用它,否则第二个jQuery中的任何东西都会被启动,但我不能 100% 确定它。我知道第一个jQuery调用允许里面的内容是私有的,直到你return它。 -
是的,基本上,两个版本的代码都会生成私有变量,以防止不必要的变量污染全局命名空间(这就是库包装的内容)。在第二个代码中,当第一个
jQuery启动时,它返回第二个jQuery作为结果。所以我认为第一个代码比第二个更直接,并且想知道这样做的好处在哪里,因为对我来说每个代码背后都必须有一个原因...... :)