大多数情况Javascript允许我们在语句结尾处省略分号。然而,有趣的是,不是在这种情况下:
var x = [5, 'asdf']
(function() {
window.alert("Yay!")
})()
除非我们在anon函数之前的语句末尾添加一个分号,否则这不起作用:
var x = [5, 'asdf'];
(function() {
window.alert("Yay!")
})()
现在它完美无缺。
在陈述结尾处管理隐含分号的晦涩规则规定,在这种情况下,这个分号不是暗示的?
答案 0 :(得分:3)
未捕获的TypeError:[5,\“asdf \”]不是函数
根据错误,它认为您的[5, 'asdf']
是一个函数名,并且您尝试通过参数执行它。如果我们将它们连接在一行中,您可以看到它与函数调用类似,传递参数为函数
[5, 'asdf'](function() { window.alert("Yay!") })
因此,使用分号向编译器说该语句结束,下一行是另一个语句IIFE。