爲什麼有的編程規範要求用 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就比較穩妥,不會出錯。