jQuery开始在匿名函数中包装所有代码:
(function ( window, undefined) {
/*
...jquery code...
*/
}) (window);
我知道在读取整个脚本时会立即执行该函数,但参数的目的是什么?一个是全局对象引用,另一个是属性引用。
现在,我记得在脚本开发的早期,undefined实际上被定义为其他东西(我记得是吗?)。这与此有关吗?
此外,该功能看起来像是作为运营商使用?就像它在上面一样,我根本不理解语句的语法。也许有上下文会有所帮助?
答案 0 :(得分:11)
包装器做了很多事情:
function(window,undefined)
为函数
提供window
和undefined
变量
匿名调用})(window);
将窗口变量传递给脚本。
如果用户覆盖了窗口对象,他们很容易修改脚本以使用正确的window
变量,即:
(function(window,undefined){})(w);
缺少传递的第二个参数会将undefined
变量设置为undefined
,这会阻止程序员通过覆盖undefined
来搞乱jQuery。