jQuery开始将其所有代码包装在一个匿名函数中:

(function ( window, undefined) {
   /*
   ...jquery code...
   */
}) (window);

我知道该函数在读取整个脚本后立即执行,但是参数的目的是什么?一个是全局对象引用,另一个是属性引用。

现在,我记得在脚本开发的早期,undefined实际上已被定义为其他东西(我还记得吗?)。这和这个有关吗?

另外,看起来该函数正在用作运算符?就像上面一样,我根本不理解该语句的语法。也许有帮助的背景?

最佳答案

包装器执行许多操作:

function(window,undefined)

向函数提供windowundefined变量

匿名调用})(window);将window变量传递给脚本。

如果用户覆盖窗口对象,则他们将能够轻松地修改脚本以使用正确的window变量,即:
(function(window,undefined){})(w);

缺少传递的第二个参数会将undefined变量设置为undefined的值,以防止程序员通过覆盖undefined弄乱jQuery。

10-04 22:05
查看更多