在好些 js 框架中有看到过 void 0 这种表示方法,使用场景有:
1. 变量声明的时候
var test = void 0;
2. 条件判断的时候
if(this === void 0) {}
控制台运行结果为:

那它与 undefined 又有什么关系呢?

undefined 在局部作用域下可以被重新赋值,在全局作用域下就不行。

为什么用 void 0 代替 undefined
void 运算符能对给定的表达式进行求值,然后返回 undefined。也就是说,void 后面你随便跟上一个表达式,返回的都是 undefined,如:
void (2), void ("hello")
另外,void 是不能被重新赋值的。
但为什么是 void 0 呢?
void 0 是表达式中最短的,用 void 0 代替 undefined 能节省字节。
不少 JavaScript 压缩工具在压缩过程中,就是将 undefined 用 void 0 代替。
评论区