您是否曾经看过 jQuery 1.4 源代码,并注意到它是如何通过以下方式封装的:
(function( window, undefined ) { //All the JQuery code here ... })(window);
我以前从未见过这种特殊的语法。那 undefined 在那里做什么?为什么 window 需要通过传递然后再次出现在末尾?
undefined
window
undefined是一个普通变量,可以使用轻松更改undefined="newvalue";。因此,jQuery创建了一个真正未定义的局部“未定义”变量。
undefined="newvalue";
由于性能原因,将window变量设为本地变量。因为当JavaScript查找变量时,它首先会遍历局部变量,直到找到变量名。当找不到它时,JavaScript将遍历下一个范围等,直到它对全局变量进行过滤。因此,如果将window变量设为本地,JavaScript可以更快地查找它。