为什么有的编程规范要求用 void 0 代替 undefined?
-void
void是JavaScript的一个操作符,而void 0会返回undefined,实验出真知,可以在浏览器试验一下
console.log(void 0) // undefined
console.log(void 0 === undefined) // true
- 原因
MDN上了解一下undefined的定义:undefined是全局对象的一个属性,也就是说,它是全局作用域中的一个变量,undefined的最初值就是原始数据类型undefined。
注: ES5之后的标准中,规定了全局变量下的undefined值为只读,不可改写的,但是局部变量中依然可以对之进行改写。
function changeUndefined () {
var undefined = 1;
console.log(undefined);
}
changeUndefined(); // 1
而void 0无论什么时候都是返回undefined,这样来看,使用void 0来代替undefined就比较稳妥,不会出错。