一尘不染

JavaScript / jQuery语法如何工作:(function(window,undefined){})(window)?

javascript

您是否曾经看过 jQuery 1.4 源代码,并注意到它是如何通过以下方式封装的:

(function( window, undefined ) {

  //All the JQuery code here 
  ...

})(window);

我以前从未见过这种特殊的语法。那 undefined 在那里做什么?为什么 window 需要通过传递然后再次出现在末尾?


阅读 400

收藏
2020-04-25

共1个答案

一尘不染

undefined是一个普通变量,可以使用轻松更改undefined="newvalue";。因此,jQuery创建了一个真正未定义的局部“未定义”变量。

由于性能原因,将window变量设为本地变量。因为当JavaScript查找变量时,它首先会遍历局部变量,直到找到变量名。当找不到它时,JavaScript将遍历下一个范围等,直到它对全局变量进行过滤。因此,如果将window变量设为本地,JavaScript可以更快地查找它。

2020-04-25