jQuery源包装在一个闭包中,如下所示:
(function(window, undefined) {
//awesome jQuery library code in here
})(window);
Run Code Online (Sandbox Code Playgroud)
我不明白为什么需要这些参数.
既然window是全局变量,为什么需要传入呢?传递一个全局参数并在闭包内使用相同名称访问它的目的是什么?
什么是undefined对的参数?为什么没有传递给它的任何价值?
nra*_*itz 11
我很确定这已经得到了解答,但是:
传入windowa)允许代码压缩使名称变硬(即用匿名函数中的单字母变量名替换它)和b)确保变量在定义库时引用窗口对象,以防万一window加载jQuery后重新定义全局范围.
包括undefined作为一个参数(但不传入一个值)做同样的事情undefined,允许变量重组和避免问题如果undefined重新定义变量(是的,Javascript允许这样).
我相信在这两种情况下,这应该加速对变量的引用,因为它使得两个全局变量在函数范围内可用,解释器在查看全局范围之前将搜索该变量.但我不能诚实地想象这里的性能差异很大 - 我认为最大的问题是变量名称munging,这使得缩小时的代码更加紧凑.
| 归档时间: |
|
| 查看次数: |
97 次 |
| 最近记录: |