在好些 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
代替。
评论区