如何在JavaScript中覆盖window和undefined?

4

我见过一些类似这样的例子

(function($, window, undefined) {
  ...
  // Do awesome stuff
  ...
})(jQuery, this);

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

这样做是为了避免 jQuery 的 $ 符号与全局变量 $ 符号(通过错误定义或某些第三方库定义)发生冲突。

为什么人们会将 this 作为参数传递并接收为 window,同时在函数参数中接收 undefined

有没有办法覆盖 window 和 undefined?

附注:我已经在 Chrome 中尝试过此方法。

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

它证明了未定义的内容是无法被覆盖的。

2
最好看一下这个答案 - Praveen
这个问题已经有答案了,你可以在 https://dev59.com/NG445IYBdhLWcg3wIG19 找到答案。 - HelloWorld
@Praveen 感谢提供链接。它说 undefined 可以被更改,但我无法覆盖它。 - Sachin Jain
1
@blunderboy 是的,它只能在函数范围内被覆盖,例如在闭包中(function() { console.log(undefined); //undefined var undefined = 10; console.log(undefined);//返回10 })(); - Praveen
@C-link 这不是重复问题,因为我想要具体了解如何覆盖未定义和 window 变量。 - Sachin Jain
1个回答

9

试试这个

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

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

我相信你可以在函数内更改undefinedwindow的值,但不能在全局范围内进行修改。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接