js匿名函数自调用

对于一个js匿名函数

function (){alert('message')}

自调用这个匿名函数

function (){alert('message')}

这样解释器会报错

为什么呢? 原因可以看一个普通js函数的调用

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

这是一个函数声明,如果在这么一个声明后直接加上括号调用,解析器不能理解而会报错:

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

而a函数申明时候,调用就可以直接加()

a() // undefined

这里可以看出无论是命名函数还是匿名函数,都是函数申明,而直接对匿名函数加()之后,解释器就不能理解而报错了

要自调用匿名函数,就需要把匿名函数声明语句变成一个表达式

!function(){alert('message')}()        // true
+function(){alert('message')}()        // NaN
-function(){alert('message')}()        // NaN
~function(){alert('message')}()        // -1
(function(){alert('message')})()        // undefined
(function(){alert('message')}())        // undefined
以上都是通过一元运算符或者括号,这样解释器就可以知道,这不是函数申明,而是函数表达式.

你可能感兴趣的:(js匿名函数自调用)