js匿名函數(shù)自調(diào)用

對(duì)于一個(gè)js匿名函數(shù)

function (){alert('message')}

自調(diào)用這個(gè)匿名函數(shù)

function (){alert('message')}

這樣解釋器會(huì)報(bào)錯(cuò)

為什么呢? 原因可以看一個(gè)普通js函數(shù)的調(diào)用

function a(){alert('message')}  // undefined

這是一個(gè)函數(shù)聲明,如果在這么一個(gè)聲明后直接加上括號(hào)調(diào)用,解析器不能理解而會(huì)報(bào)錯(cuò):

function a(){alert('message')}()        // SyntaxError: unexpected_token

而a函數(shù)申明時(shí)候,調(diào)用就可以直接加()

a() // undefined

這里可以看出無(wú)論是命名函數(shù)還是匿名函數(shù),都是函數(shù)申明,而直接對(duì)匿名函數(shù)加()之后,解釋器就不能理解而報(bào)錯(cuò)了

要自調(diào)用匿名函數(shù),就需要把匿名函數(shù)聲明語(yǔ)句變成一個(gè)表達(dá)式

!function(){alert('message')}()        // true
+function(){alert('message')}()        // NaN
-function(){alert('message')}()        // NaN
~function(){alert('message')}()        // -1
(function(){alert('message')})()        // undefined
(function(){alert('message')}())        // undefined
以上都是通過(guò)一元運(yùn)算符或者括號(hào),這樣解釋器就可以知道,這不是函數(shù)申明,而是函數(shù)表達(dá)式.
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類(lèi)型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,621評(píng)論 1 32
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 28,771評(píng)論 1 45
  • 概要 64學(xué)時(shí) 3.5學(xué)分 章節(jié)安排 電子商務(wù)網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,789評(píng)論 0 3
  • 函數(shù)是一段可以反復(fù)調(diào)用的代碼塊。函數(shù)還能接受輸入的參數(shù),不同的參數(shù)會(huì)返回不同的值。 概述 函數(shù)的聲明 JavaSc...
    oWSQo閱讀 1,467評(píng)論 0 4
  • 上禮拜給老媽打電話(huà),她接起電話(huà)輕聲說(shuō)自己在外婆家,外婆可能要走了。 我一下子沒(méi)反應(yīng)過(guò)來(lái),重復(fù)了下,要走了?心想是散...
    Mini號(hào)小小閱讀 226評(píng)論 0 0

友情鏈接更多精彩內(nèi)容