有些人习惯用 void 0 替代 undefined 的原因

15 阅读1分钟

Undefined 类型表示未定义,它的类型只有一个值,就是 undefined。任何变量在赋值前是 Undefined 类型、值为 undefined,一般我们可以用全局变量 undefined(就是名为 undefined 的这个变量)来表达这个值,或者 void 运算来把任意一个表达式变成 undefined 值。

但是呢,因为 JavaScript 的代码 undefined 是一个变量,而并非是一个关键字,这是 JavaScript 语言公认的设计失误之一,所以,我们为了避免无意中被篡改,我建议使用 void 0 来获取 undefined 值。

担心被篡改,但是实验结果是:

image.png

报错翻译:未捕获的类型错误:无法将值分配给对象'#<window>'的只读属性'undefined'

原因

  • 在现代 JavaScript 中,undefined 是只读属性,无法被篡改
  • 虽然没有必要强制使用 void 0,但有些人出于习惯或兼容性考虑仍然会选择这种方式。
  • 如果你的代码运行在现代环境中,并且你信任代码不会被恶意修改,那么直接使用 undefined 是完全可以的。