首先,需要知道的是 void 0 === undefined。
什么是 void ?
void是一元运算符,出现在操作数的左边,操作数可以是任意类型的值。
void 的行为特点:
- 不管
void 0后的运算数是什么,总是返回undefined。 void会对其后的运算数做取值操作,因此若属性有个getter函数,则调用该函数。
可以使用 void 0 替换 undefined
但在实际项目中是否真的需要使用void 0替换,还有待商榷。
原因:
- 不好维护。可能后续的同事不太清楚
void 0的使用。 - 如果是没有声明的值,直接判断,会报错(见例)。
var x;
if(x === void 0) {
// 执行这些语句
}
// 没有声明y
if(y === void 0) {
// 抛出一个RenferenceError错误(与`typeof`相比)
}