我想知道,这是合法的吗?
function test()
{
alert ("hello")
$("#loading").show();
}
或者我应该写这个:
function test()
{
alert ("hello");
$("#loading").show();
}
JavaScript中的分号是否可选?因为我在一个论坛上看到了这个:
不,分号在JavaScript中通常是可选的(Google用于ASI /自动分号插入)。使用它们会使代码看起来更清晰,ASI是一个可怕的错误功能(至少在我看来)。
答案 0 :(得分:17)
分号并不总是强制性的,但我总是建议使用它们。有关自动分号插入的规则,请参阅ECMAScript spec:
某些ECMAScript语句(空语句,变量语句, 表达式语句,do-while语句,continue语句,break 必须终止语句,return语句和throw语句 用分号。这样的分号可能总是明确地出现在 源文本。然而,为方便起见,可省略这样的分号 在某些情况下从源文本。这些情况是 描述说分号是自动插入的 这些情况下的源代码令牌流。
更新(进一步解释)
也许最常见的情况用来说明为什么自动分号插入可能是坏的,@ sissonb在另一个答案中提到了这一点。请考虑以下事项:
function something(a, b) {
return
a + b;
}
您可能期望忽略新行,并将代码解释为:
function something(a, b) {
return a + b;
}
不幸的是,自动分号插入发挥作用,代码实际上解释如下:
function something(a, b) {
return;
a + b;
}
空return
语句表示函数返回undefined
。因此,不是两个参数的一个很好的总和,你得到undefined
,并可能最终对你出错的地方感到困惑!这就是为什么我完全同意你的问题中的声明,即自动分号插入是一种可怕的错误。
答案 1 :(得分:0)
分号不是强制性的。如果它们丢失,它们会自动添加到一行的末尾,这实际上导致此代码返回未定义。
return
{
text:"hello"
}