为什么我必须在自执行匿名函数之前加一个分号?

时间:2017-10-02 16:05:52

标签: javascript syntax

大多数情况Javascript允许我们在语句结尾处省略分号。然而,有趣的是,不是在这种情况下:

var x = [5, 'asdf']

(function() {
  window.alert("Yay!")
})()

除非我们在anon函数之前的语句末尾添加一个分号,否则这不起作用:

var x = [5, 'asdf'];

(function() {
  window.alert("Yay!")
})()

现在它完美无缺。

在陈述结尾处管理隐含分号的晦涩规则规定,在这种情况下,这个分号不是暗示的?

1 个答案:

答案 0 :(得分:3)

  

未捕获的TypeError:[5,\“asdf \”]不是函数

根据错误,它认为您的[5, 'asdf']是一个函数名,并且您尝试通过参数执行它。如果我们将它们连接在一行中,您可以看到它与函数调用类似,传递参数为函数

[5, 'asdf'](function() { window.alert("Yay!") })

因此,使用分号向编译器说该语句结束,下一行是另一个语句IIFE