ECMAScript 之 void

栏目: JavaScript · 发布时间: 5年前

内容简介:ECMAScript 如同 C 語言也有ECMAScript 5void

ECMAScript 如同 C 語言也有 void ,但存在感很低,很多人甚至不知道 ECMAScript 有 void

Version

ECMAScript 5

Definition

void

無論搭配任何 expression,皆回傳 undefined

若以白話來說, void 相當於以下實作:

function void(expression) {
    return undefined;
}

Why ?

根據 JavaScript 爸爸 Brendan Eich 所言:

I added the void operator to JavaScript before Netscape 2 shipped to make it easy to discard any non-undefined value in a JavaScript URL.

<a href="javascript:void window.open('https://www.google.com')">Google</a>

window.open() 會開啟新的 tab,並回傳 window object,這會導致一些 browser 將目前頁面也導向新的連結,使用 void 會捨棄 window object 而回傳 undefined ,這使得 browser 不會改變原來頁面,這是 Brendan Eich 設計 void 的初衷。

void 0

if (x === void 0) // always safe

在 ECMAScript 3, undefined 為 global object,因此能夠被修改,而 void 0 永遠是 undefined ,不會被修改,所以可使用 void 0 取代 undefined

undefined 在 ECMAScript 5 之後被定義為 read-only,不能被修改,因此使用 void 0 取代 undefined 的動機已經不再如以往那麼強烈

使 Expression 成為 Undefined

<a href="javascript:void(0)" @click="onClick">Google</a>

以 Vue 而言, void 大概只有在這裡會看到,為了要讓 <a/> 有底線,所以一定得加上 href ,但實際卻是執行 @clickonClick() ,此時我們必須加上 javascript:void(0) 使 href 成為 undefined ,喪失原本 hyperlink 該有的功能。

IIFE

(function() {
    
})();

IIFE 的標準寫法,是將 function() {} 以括號刮起來,再加上 () 立即執行。

void function() {
    
}();

若你覺得加上 () 很醜不易閱讀,也可以在 function() {} 加上 void ,這會強迫 void 之後的 function 加以運算,然後可透過 () 立即執行。

Conclusion

  • void 0 取代 undefined 具有時代意義,目前已經不太需要
  • href="javascript:void(0)" 是今日還可以看到 void 的少數情景
  • void 用於 IIFE 也是不錯的點子,可避免 () 不易閱讀

Reference

Dr. Axel Rauschmayer , Speaking JavaScript


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Programming Amazon Web Services

Programming Amazon Web Services

James Murty / O'Reilly Media / 2008-3-25 / USD 49.99

Building on the success of its storefront and fulfillment services, Amazon now allows businesses to "rent" computing power, data storage and bandwidth on its vast network platform. This book demonstra......一起来看看 《Programming Amazon Web Services》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

URL 编码/解码
URL 编码/解码

URL 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具