我想知道,这是合法的吗?
function test()
{
alert ("hello")
$("#loading").show();
}
Run Code Online (Sandbox Code Playgroud)
或者我应该写这个:
function test()
{
alert ("hello");
$("#loading").show();
}
Run Code Online (Sandbox Code Playgroud)
JavaScript中的分号是否可选?因为我在论坛中看到了这个:
不,分号在JavaScript中通常是可选的(google用于ASI /自动分号插入).使用它们会使代码看起来更清晰,ASI是一个可怕的错误功能(至少在我看来).
Jam*_*ice 17
分号并不总是强制性的,但我总是建议使用它们.有关自动分号插入的规则,请参阅ECMAScript规范:
某些ECMAScript语句(空语句,变量语句,表达式语句,do-while语句,continue语句,break语句,return语句和throw语句)必须以分号结束.此类分号可能始终显式出现在源文本中.然而,为方便起见,在某些情况下可以从源文本中省略这样的分号.这些情况通过说在这些情况下分号自动插入源代码令牌流来描述.
更新(进一步解释)
也许最常见的情况用于说明为什么自动分号插入可能是坏的,这是@sissonb在另一个答案中提到的.考虑以下:
function something(a, b) {
return
a + b;
}
Run Code Online (Sandbox Code Playgroud)
你可能期望的是新行被忽略,代码解释为:
function something(a, b) {
return a + b;
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,自动分号插入发挥作用,代码实际上解释如下:
function something(a, b) {
return;
a + b;
}
Run Code Online (Sandbox Code Playgroud)
空return语句表示函数返回undefined.因此,不是两个论点中的一个很好的总和,你得到undefined并可能最终对你出错的地方感到困惑!这就是为什么我完全同意你的问题中的声明,即自动分号插入是一个可怕的错误.
| 归档时间: |
|
| 查看次数: |
7789 次 |
| 最近记录: |