我见过一些类似这样的例子
(function($, window, undefined) {
...
// Do awesome stuff
...
})(jQuery, this);
我理解将 jQuery 作为参数传递并接收为 $。
这样做是为了避免 jQuery 的 $ 符号与全局变量 $ 符号(通过错误定义或某些第三方库定义)发生冲突。
为什么人们会将 this
作为参数传递并接收为 window
,同时在函数参数中接收 undefined
?
有没有办法覆盖 window 和 undefined?
附注:我已经在 Chrome 中尝试过此方法。
undefined = 2; // 2
undefined == 2; // false
它证明了未定义的内容是无法被覆盖的。
(function() { console.log(undefined); //undefined var undefined = 10; console.log(undefined);//返回10 })();
。 - Praveen