2015年12月10日 星期四

JavaScript 中的 void 運算子介紹

void 運算子會對給定的表達式進行求值,然後直接返回 undefined。
語法

void expression

描述

這個運算子能向期望一個表達式的值是undefined的地方插入會產生副作用的表達式。

void 運算子通常只用於獲取 undefined 的原始值,一般使用 void(0)(等同於 void 0)。在上述情況中,也可以使用全域變數undefined 來代替(假定其仍是預設值)。
立即呼叫的函式表達式

在使用立即執行的函式表達式時,可以利用 void 運算子讓 JavaScript 引擎把一個函式識別成函式表達式而不是函式聲明(語句)。

void function iife() {
    var bar = function () {};
    var baz = function () {};
    var foo = function () {
        bar();
        baz();
     };
    var biz = function () {};

    foo();
    biz();
}();

JavaScript URIs

當用戶點擊一個以 javascript: URI 時,瀏覽器會對冒號後面的程式碼進行求值,然後把求值的結果顯示在頁面上,這時頁面基本上是一大片空白,這通常不是我們想要的。只有當這段程式碼的求值結果是 undefined 的時候,瀏覽器才不會去做這件傻事,所以我們經常會用 void 運算子來實現這個需求。像下面這樣:

<a href="javascript:void(0);">
  這個鏈接點擊之後不會做任何事情,如果去掉 void(),
  點擊之後整個頁面會被替換成一個字元 0。
</a>

<a href="javascript:void(document.body.style.backgroundColor='green');">
  點擊這個鏈接會讓頁面背景變成綠色。
</a>

注意,雖然這麼做是可行的,但利用 javascript: 偽協議來執行 JavaScript 程式碼是不推薦的,推薦的做法是為鏈接元素綁定 click 事件。

沒有留言:

張貼留言