如何在javascript中覆盖窗口和未定义?

sac*_*024 3 javascript parameters jquery function

我见过这样的例子

(function($, window, undefined) {
  ...
  // Do awesome stuff
  ...
})(jQuery, this);
Run Code Online (Sandbox Code Playgroud)

我理解将jQuery作为参数传递并接收为$.

这样做是为了避免jquery的$和任何全局变量$(由错误或某些第三方库定义)之间的冲突.

为什么人们传递this和接受window,并得到undefined函数的参数?

我们有什么方法可以覆盖窗口和undefined?

PS:我已经在Chrome中试过了

undefined = 2; // 2
undefined == 2; // false
Run Code Online (Sandbox Code Playgroud)

它证明未定义不能被覆盖.

小智 9

试试这个

function test () {
    var undefined = 2; // 2
    console.log(undefined == 2); // true

    var window = 5; // 5
    console.log(window == 5); // true
}
Run Code Online (Sandbox Code Playgroud)

我相信你可以改变undefinedwindow内部的价值function,但不在global范围内