这个JavaScript/jQuery语法是如何工作的:(函数(窗口,未定义的){})(窗口)?

这个JavaScript/jQuery语法是如何工作的:(函数(窗口,未定义的){})(窗口)?

你有没有看过引擎盖下面jQuery 1.4源代码并注意到它是如何以下方式封装的:

(function( window, undefined ) {

  //All the JQuery code here 
  ...})(window);

我读过一篇关于JavaScript命名另一个叫“一对重要的父母“所以我知道这里发生了什么。

但我从未见过这种特殊的语法。那是什么undefined在那里做什么?为什么window需要被传递,然后又出现在结尾?


ITMISS
浏览 385回答 3
3回答

眼眸繁星

其他人已经解释过undefined. undefined类似于可以将其重新定义为任何值的全局变量。这种技术是为了防止所有未定义的检查中断,如果有人写了这样的话,undefined = 10在某个地方。一个从未被通过的论点被保证是真实的。undefined而不考虑变量 undefined.下面的示例可以说明传递窗口的原因。(function() {    console.log(window);    ...    ...    ...    var window = 10;})();控制台记录了什么?价值window目标对吧?错!10?不对!它记录undefined..JavaScript解释器(或JIT编译器)以这种方式重写它-(function() {    var window; //and every other var in this function    console.log(window);    ...    ...    ...    window = 10;})();但是,如果您得到window变量作为一个参数,没有变量,因此没有惊喜。我不知道jQuery是否在这样做,但如果您正在重新定义window函数中任何地方的局部变量,无论出于什么原因,从全局范围借用它是个好主意。
打开App,查看更多内容
随时随地看视频慕课网APP