你是否推荐在JavaScript中的每个语句之后使用分号?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (42)

在很多情况下,如果您将它们排除在外,JavaScript解析器会为您插入分号。我的问题是,你把它们排除在外了吗?

如果您不熟悉规则,那么在Mozilla网站上有一个分号插入的说明。关键是:

如果第一至第n 个 JavaScript程序形式的令牌是语法上有效,但第一至第n + 1个ST令牌是不与存在n之间的换行符个令牌和第n + 1个ST令牌,则解析器尝试将所述n之间的虚拟分号令牌之后再次解析程序次和第n + 1个ST令牌。

这种描述可能不完整,因为它没有解释@Dreas的例子。任何人都有一个链接到完整的规则,或看看为什么这个例子得到一个分号?(我在JScript.NET中试过。)

提问于
用户回答回答于

是的,你应该在JavaScript中的每个语句之后使用分号。

用户回答回答于

一个模棱两可的情况下,在没有分号的情况下会中断:

// 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”错误。

扫码关注云+社区