第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

全部開(kāi)發(fā)者教程

JavaScript 入門教程

void

void 運(yùn)算符 對(duì)給定的表達(dá)式進(jìn)行求值,然后返回 undefined。(MDN)

表達(dá)式前面如果帶有 void 關(guān)鍵字,則表達(dá)式的結(jié)果就會(huì)被忽略,并將 undefined 作為結(jié)果。

從業(yè)務(wù)上來(lái)看,void 關(guān)鍵字并不常用。

1. 用于調(diào)用函數(shù)表達(dá)式

當(dāng)想讓一個(gè)函數(shù)立即實(shí)行的時(shí)候,需要讓 JavaScript 將一個(gè)函數(shù)識(shí)別為表達(dá)式,void 關(guān)鍵字就能起到這個(gè)作用。

void function() {
  alert('馬上執(zhí)行!沖沖沖!');
}();

圖片描述

但有局限性,如果需要獲取到函數(shù)的返回值,就不能使用 void。

var num1 = 1;
var num2 = 2;

var result = void function(number1, number2) {
  return [number1 + number2, number1 * number2];
}(num1, num2);

result.forEach(function(res) {
  console.log(res);
});

圖片描述

如這個(gè)例子,函數(shù)返回了兩數(shù)之和與兩數(shù)之積的結(jié)果,但因?yàn)?void 關(guān)鍵字,實(shí)際 result 變量被賦值為 undefined,導(dǎo)致程序無(wú)法正常執(zhí)行。

2. 內(nèi)聯(lián)在 HTML 中,阻止 a 標(biāo)簽的默認(rèn)事件

<a> 標(biāo)簽的 href 屬性,可以用來(lái)執(zhí)行 JavaScript 代碼。

通??梢赃@么寫:

實(shí)例演示
預(yù)覽 復(fù)制
復(fù)制成功!
<a href="javascript: void;">跳轉(zhuǎn)!</a>
<a href="javascript: void 0;">跳轉(zhuǎn)!</a>
<a href="javascript: void (0);">跳轉(zhuǎn)!</a>
運(yùn)行案例 點(diǎn)擊 "運(yùn)行案例" 可查看在線運(yùn)行效果

圖片描述

這三行代碼的效果是一樣的。

如果 <a> 標(biāo)簽的 href 屬性是 javascript:表達(dá)式;,則會(huì)執(zhí)行表達(dá)式的內(nèi)容,并將頁(yè)面的內(nèi)容設(shè)置為表達(dá)式的結(jié)果,如果表達(dá)式的結(jié)果是 undefined,則什么都不做。

根據(jù)這個(gè)規(guī)則,void 就起到了作用,但其實(shí)不寫表達(dá)式,依然能達(dá)到這個(gè)效果。

實(shí)例演示
預(yù)覽 復(fù)制
復(fù)制成功!
<a href="javascript:;">跳轉(zhuǎn)!</a>
運(yùn)行案例 點(diǎn)擊 "運(yùn)行案例" 可查看在線運(yùn)行效果

圖片描述

這樣的效果和上面使用 void 關(guān)鍵字的方式是等價(jià)的,這也是常用的方式。

但碰到需要使用 <a> 標(biāo)簽執(zhí)行函數(shù)的時(shí)候,void 就變得相對(duì)關(guān)鍵。

實(shí)例演示
預(yù)覽 復(fù)制
復(fù)制成功!
<script>
  function log(who) {
    console.log('點(diǎn)擊了:' + who);

    return who;
  }
</script>

<a href="javascript: log('add');">添加</a>
<a href="javascript: log('update');">修改</a>
<a href="javascript: log('delete');">刪除</a>
運(yùn)行案例 點(diǎn)擊 "運(yùn)行案例" 可查看在線運(yùn)行效果

圖片描述

這種情況如果不加 void,頁(yè)面內(nèi)容就會(huì)發(fā)生改變,因?yàn)?log 函數(shù)存在非 undefined 的返回值。

實(shí)例演示
預(yù)覽 復(fù)制
復(fù)制成功!
<script>
  function log(who) {
    console.log('點(diǎn)擊了:' + who);

    return who;
  }
</script>

<a href="javascript: void log('add');">添加</a>
<a href="javascript: void log('update');">修改</a>
<a href="javascript: void log('delete');">刪除</a>
運(yùn)行案例 點(diǎn)擊 "運(yùn)行案例" 可查看在線運(yùn)行效果

圖片描述

加上 void 一樣,結(jié)果就符合預(yù)期了,具體的添加、刪除操作,再通過(guò)綁定對(duì)應(yīng)的事件來(lái)實(shí)現(xiàn)。

3. 小結(jié)

void 的使用場(chǎng)景有限,但在某些情況下可以提高代碼的健壯性,如明確不需要結(jié)果的場(chǎng)景下,加上 void 關(guān)鍵字,這樣可以避免未來(lái)表達(dá)式結(jié)果的改變帶來(lái)的問(wèn)題。