由于JavaScript语言的设计失误,undefined是一个变量,而不是一个关键字。为了避免无意中被篡改,很多人建议使用 void 0
来获取 undefined 值。
- 在现代浏览器(JavaScript 1.8.5/Firefox 4+),自
ECMAscript5
标准以来 undefined 是一个不能被配置(non-configurable),不能被重写(non-writable)的属性 - 局部变量仍然可以修改,例如:
js
// 不要这样做!
(() => {
const undefined = "foo";
console.log(undefined, typeof undefined); // foo string
})();
((undefined) => {
console.log(undefined, typeof undefined); // foo string
})("foo");
// 不要这样做!
(() => {
const undefined = "foo";
console.log(undefined, typeof undefined); // foo string
})();
((undefined) => {
console.log(undefined, typeof undefined); // foo string
})("foo");
参考