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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

感嘆號(hào)在功能之前做了什么?

感嘆號(hào)在功能之前做了什么?

感嘆號(hào)在功能之前做了什么?!function () {}();
查看完整描述

4 回答

?
哈士奇WWW

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超6個(gè)贊

功能:

function () {}

什么都不返回(或未定義)。

有時(shí)我們想在創(chuàng)建函數(shù)時(shí)調(diào)用函數(shù)。你可能想嘗試這個(gè):

function () {}()

但它導(dǎo)致了一個(gè)SyntaxError。

!在函數(shù)之前使用運(yùn)算符會(huì)將其視為表達(dá)式,因此我們可以調(diào)用它:

!function () {}()

這也將返回與函數(shù)返回值相反的布爾值,在這種情況下true,因?yàn)?code>!undefined是true。如果您希望實(shí)際返回值是調(diào)用的結(jié)果,那么嘗試這樣做:

(function () {})()


查看完整回答
反對(duì) 回復(fù) 2019-05-27
?
斯蒂芬大帝

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊

使用airbnb JavaScript指南!上標(biāo)記的函數(shù)調(diào)用是一個(gè)很好的觀點(diǎn)

通常在單獨(dú)的文件(也稱為模塊)上使用此技術(shù)的想法,后來(lái)得到連接。這里需要注意的是,文件應(yīng)該被工具連接起來(lái),這些工具將新文件放在新行(這對(duì)于大多數(shù)連接工具來(lái)說(shuō)無(wú)論如何都是常見的行為)。在這種情況下,!如果先前連接的模塊錯(cuò)過(guò)了后續(xù)分號(hào),則使用將有助于避免錯(cuò)誤,但這樣可以靈活地將它們置于任何順序而不用擔(dān)心。


!function abc(){}();

!function bca(){}();

會(huì)像以前一樣工作


!function abc(){}();

(function bca(){})();

但保存兩個(gè)字符和任意看起來(lái)更好。


順便說(shuō)一句任何的+,-,~,void運(yùn)營(yíng)商有同樣的效果,在調(diào)用該函數(shù),這是肯定的方面,如果你有使用的東西從該功能,他們將采取不同的回報(bào)。


abcval = !function abc(){return true;}() // abcval equals false

bcaval = +function bca(){return true;}() // bcaval equals 1

zyxval = -function zyx(){return true;}() // zyxval equals -1

xyzval = ~function xyz(){return true;}() // your guess?

但是如果你將IIFE模式用于一個(gè)文件,一個(gè)模塊代碼分離并使用concat工具進(jìn)行優(yōu)化(這使得一行一個(gè)文件工作),那么構(gòu)造


!function abc(/*no returns*/) {}()

+function bca() {/*no returns*/}()

將執(zhí)行安全的代碼,與第一個(gè)代碼示例相同。


這個(gè)會(huì)拋出錯(cuò)誤導(dǎo)致JavaScript ASI無(wú)法完成其工作。


!function abc(/*no returns*/) {}()

(function bca() {/*no returns*/})()

關(guān)于一元運(yùn)算符的一個(gè)注意事項(xiàng),他們會(huì)做類似的工作,但僅在以下情況下,他們不會(huì)在第一個(gè)模塊中使用。因此,如果您無(wú)法完全控制連接順序,那么它們就不那么安全了。


這有效:


!function abc(/*no returns*/) {}()

^function bca() {/*no returns*/}()

這不是:


^function abc(/*no returns*/) {}()

!function bca() {/*no returns*/}()


查看完整回答
反對(duì) 回復(fù) 2019-05-27
?
猛跑小豬

TA貢獻(xiàn)1858條經(jīng)驗(yàn) 獲得超8個(gè)贊

它返回語(yǔ)句是否可以計(jì)算為false。例如:


!false      // true

!true       // false

!isValid()  // is not valid

您可以使用它兩次將值強(qiáng)制為布爾值:


!!1    // true

!!0    // false

所以,更直接地回答你的問(wèn)題:


var myVar = !function(){ return false; }();  // myVar contains true

編輯:它具有將函數(shù)聲明更改為函數(shù)表達(dá)式的副作用。例如,以下代碼無(wú)效,因?yàn)樗唤忉尀槿鄙俦匦铇?biāo)識(shí)符(或函數(shù)名稱)的函數(shù)聲明:


function () { return false; }();  // syntax error


查看完整回答
反對(duì) 回復(fù) 2019-05-27
?
largeQ

TA貢獻(xiàn)2039條經(jīng)驗(yàn) 獲得超8個(gè)贊

JavaScript語(yǔ)法101.這是一個(gè)函數(shù)聲明

function foo() {}

請(qǐng)注意,沒(méi)有分號(hào):這只是一個(gè)函數(shù)聲明。您需要一個(gè)調(diào)用foo()來(lái)實(shí)際運(yùn)行該函數(shù)。

現(xiàn)在,當(dāng)我們添加看似無(wú)害的感嘆號(hào)時(shí):!function foo() {}它將它變成一個(gè)表達(dá)式。它現(xiàn)在是一個(gè)函數(shù)表達(dá)式。

!本身并不能調(diào)用該函數(shù),當(dāng)然,但我們現(xiàn)在可以把()結(jié)尾:!function foo() {}()它的優(yōu)先級(jí)高于!并立即調(diào)用函數(shù)。

所以作者正在做的是為每個(gè)函數(shù)表達(dá)式保存一個(gè)字節(jié); 一種更易讀的寫作方式是:

(function(){})();

最后,!使表達(dá)式返回true。這是因?yàn)樵谀J(rèn)情況下所有IIFE回報(bào)undefined,這給我們留下了!undefined這是true。不是特別有用。


查看完整回答
反對(duì) 回復(fù) 2019-05-27
  • 4 回答
  • 0 關(guān)注
  • 1005 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)