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
以上都是通过一元运算符或者括号,这样解释器就可以知道,这不是函数申明,而是函数表达式.
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

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

友情链接更多精彩内容