关于jquery:如何在javascript中覆盖窗口和未定义?

How to override window and undefined in javascript?

本问题已经有最佳答案,请猛点这里访问。

我见过这样的例子

1
2
3
4
5
(function($, window, undefined) {
  ...
  // Do awesome stuff
  ...
})(jQuery, this);

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

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

为什么人们传递this并以window接收并在函数参数中接收undefined

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

PS:我已经在Chrome中试过了

1
2
undefined = 2; // 2
undefined == 2; // false

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


试试这个

1
2
3
4
5
6
7
function test () {
    var undefined = 2; // 2
    console.log(undefined == 2); // true

    var window = 5; // 5
    console.log(window == 5); // true
}

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