偶然看到一個問題:為什麼有的編程規範要求用 void 0 代替 undefined? 如果不知道這個答案的小伙伴,第一反應就要問void 0是什麼鬼? void 0 void是JavaScript的一個操作符,而void 0會返回undefined,實驗出真知,可以在瀏覽器試驗一下 可以看出,voi ...
偶然看到一個問題:為什麼有的編程規範要求用 void 0 代替 undefined?
如果不知道這個答案的小伙伴,第一反應就要問void 0是什麼鬼?
void 0
void是JavaScript的一個操作符,而void 0會返回undefined,實驗出真知,可以在瀏覽器試驗一下
console.log(void 0) // undefined console.log(void 0 === undefined) // true
可以看出,void 0跟undefined是一樣的,所以用void 0 代替undefined是完全可行的。但是為什麼呢?
why
大家可以去MDN上瞭解一下undefined的定義:undefined是全局對象的一個屬性,也就是說,它是全局作用域中的一個變數,undefined的最初值就是原始數據類型undefined。
註: ES5之後的標準中,規定了全局變數下的
undefined
值為只讀,不可改寫的,但是局部變數中依然可以對之進行改寫。
function changeUndefined () { var undefined = 1; console.log(undefined); } changeUndefined(); // 1
而void 0無論什麼時候都是返回undefined,這樣來看,使用void 0來代替undefined就比較穩妥,不會出錯。