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

對于一個js匿名函數(shù)

function (){alert('message')}

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

function (){alert('message')}

這樣解釋器會報錯

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

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

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

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

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

a() // undefined

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

要自調(diào)用匿名函數(shù),就需要把匿名函數(shù)聲明語句變成一個表達(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
以上都是通過一元運算符或者括號,這樣解釋器就可以知道,這不是函數(shù)申明,而是函數(shù)表達(dá)式.
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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

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