首先看看void运算符是干嘛的,以及来看void 0和undefined的关系:
void: 执行一个表达式,不返回任何值(即输出undefined)
b = void (a = 5);
console.log(a, b); // 5 undefined
void 0 === undefined // true
我们知道,void 0表达式的返回值就是undefined,所以你会看到有些代码里面用void 0 代替 undefined,那么对比undefined,为什么选择用void 0呢 ?
避免undefined作为变量被重写
undefined在局部作用域下会被重写(全局作用于只读)
var undefine = 1;
console.log(undefined, typeof undefined); // undefined 'undefined'
function test() {
var undefined = 1;
console.log(undefined, typeof undefined); // 1 'number'
}
test();
<IE浏览器8及以下版本undefined在全局作用域可读写>
更短的字节长度
console.log('void 0'.length, 'undefined'.length); // 6 9
扩展: void还可以用于a标签点击防止跳转,因为返回false
<a href="javascript:void 0">跳转</a>