【发布时间】:2020-02-24 10:30:48
【问题描述】:
在javascript的"non-strict"模式下,我们可以给undefined赋值。我试图给它赋值,但是当我试图打印那个值时,它给了我奇怪的结果。
let a = 10;
undefined = 20;
a = undefined;
console.log(a); // undefined not 20
console.log(undefined); // undefined not 20
如果我创建自己的范围,那么 undefined 可以被覆盖。我知道从 ECMA 5 开始你不能覆盖 undefined 它是只读的。那么我如何为自己的范围获得以下输出(将 undefined 设置为 10)?
这是否意味着我只能在自己的范围内(非全局)编写?
(function (undefined) {
undefined = 10;
console.log("Value of undefined: " + undefined);
})();
【问题讨论】:
-
你不能重新分配 global
undefined. -
“在现代浏览器(JavaScript 1.8.5 / Firefox 4+)中,根据 ECMAScript 5 规范,undefined 是一个不可配置、不可写的属性。即使不是这种情况,也要避免覆盖它。” — MDN docs for
undefined。 -
@SebastianSimon 谢谢!抱歉,不知道。
-
@PraveenKumarPurushothaman 不是。它是
window对象的一个属性 - 在最近的环境中,它是写保护的,但过去不是。 -
@VLAZ 谢谢!抱歉,不知道。
标签: javascript ecmascript-6 undefined ecmascript-next