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
以上都是通过一元运算符或者括号,这样解释器就可以知道,这不是函数申明,而是函数表达式.

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 10,760评论 1 32
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 26,680评论 1 45
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 7,455评论 0 3
  • 函数是一段可以反复调用的代码块。函数还能接受输入的参数,不同的参数会返回不同的值。 概述 函数的声明 JavaSc...
    oWSQo阅读 910评论 0 4
  • 上礼拜给老妈打电话,她接起电话轻声说自己在外婆家,外婆可能要走了。 我一下子没反应过来,重复了下,要走了?心想是散...
    Mini号小小阅读 125评论 0 0