在很多情况下,如果您将它们排除在外,JavaScript解析器会为您插入分号。我的问题是,你把它们排除在外了吗?
如果您不熟悉规则,那么在Mozilla网站上有一个分号插入的说明。关键是:
如果第一至第n 个 JavaScript程序形式的令牌是语法上有效,但第一至第n + 1个ST令牌是不与存在n之间的换行符个令牌和第n + 1个ST令牌,则解析器尝试将所述n之间的虚拟分号令牌之后再次解析程序次和第n + 1个ST令牌。
这种描述可能不完整,因为它没有解释@Dreas的例子。任何人都有一个链接到完整的规则,或看看为什么这个例子得到一个分号?(我在JScript.NET中试过。)
发布于 2018-03-23 15:50:44
一个模棱两可的情况下,在没有分号的情况下会中断:
// define a function
var fn = function () {
//...
} // semicolon missing at this line
// then execute some code inside a closure
(function () {
//...
})();
这将被解释为:
var fn = function () {
//...
}(function () {
//...
})();
我们最终将第二个函数作为参数传递给第一个函数,然后尝试将第一个函数调用的结果作为函数调用。第二个函数在运行时会失败,出现“... is not a function”错误。
https://stackoverflow.com/questions/-100007758
复制相似问题