爲何用「void 0」代替「undefined」

undefined 有什麼問題

  1. 由於 undefined 不是保留字(Reserved Word),它只是全局對象的一個屬性,在低版本的IE瀏覽器中會被重寫。
var undefined = 10;

// undefined -- chrome
// 10 -- IE 8
alert(undefined);
複製代碼
  1. 在局部做用域中 undefined 仍是能夠被重寫
(function() {
  var undefined = 10;

  // 10 -- chrome
  alert(undefined);
})();
複製代碼

爲何要用 void 0 代替

MDN 定義: The void operator evaluates the given expression and then returns undefined.javascript

意思是說 void 運算符能夠對給定的表達式求值,而且不管後面跟的是什麼,都是返回 undefined,因此說不管是void 0 仍是void 1都是能夠的,更重要的是void不能被重寫。html

JavaScript URIs

當用戶點擊一個javascript: URI 時,它會執行URI中的代碼,而後用返回的值替換頁面中的內容,除非返回的事undefined。java

<a href="javascript:void(0);">
  這個連接點擊以後不會作任何事情,
  若是去掉 void(),點擊以後整個頁面會被替換成一個字符 0。
</a>
<p> chrome中即便<a href="javascript:0;">也沒變化,firefox中會變成一個字符串0 </p>
<a href="javascript:void(document.body.style.backgroundColor='green');">
  點擊這個連接會讓頁面背景變成綠色。
</a>
複製代碼

注意,雖然這麼作是可行的,但利用 javascript: 僞協議來執行 JavaScript 代碼是不推薦的.chrome

相關文章
相關標籤/搜索