必需:当两条语句位于同一行时
当您在同一行上有两个或多个语句时,分号只能是强制性的:
var i = 0; i++ // <-- semicolon obligatory
// (but optional before newline)
var i = 0 // <-- semicolon optional
i++ // <-- semicolon optional
可选:声明后
JavaScript中的分号用于分隔语句,但如果语句后跟换行符(或块中只有一个语句),则可以省略它。一个语句是一段代码,告诉计算机做某事。以下是最常见的语句类型:{
}
var i; // variable declaration
i = 5; // value assignment
i = i + 1; // value assignment
i++; // same as above
var x = 9; // declaration & assignment
var fun = function() {...}; // var decl., assignmt, and func. defin.
alert("hi"); // function call
所有这些声明可以用一个结束;
,但他们都不一定。有些人认为这是一个很好的习惯,以终止每个语句;
- 这使您的代码更容易解析,并压缩:如果您删除换行符,您不必担心几个语句最终没有分离在同一行。
避免!
一个关闭大括号后
关闭大括号后,不要放分号}
。唯一的例外是赋值语句,如var obj = {};
上面所述。
// NO semicolons after }:
if (...) {...} else {...}
for (...) {...}
while (...) {...}
// BUT:
do {...} while (...);
// function statement:
function (arg) { /*do this*/ } // NO semicolon after }
2.在圆括号上的if,for,while或switch语句
它不会伤害到把一个分号后的的语句(它会被忽略,你可能会看到一个警告,这是不必要的)。但是,一个分号它不属于(如轮后括号内的的,,,或语句)是一个非常糟糕的主意:{ }
if
(
)
if
for
while
switch
if (0 === 1); { alert("hi") }
// equivalent to:
if (0 === 1) /*do nothing*/ ;
alert ("hi");
此代码将提醒“嗨”,但不能因为0等于1,而是因为分号。它使JavaScript认为你在那里有一个空白的声明,其右边的一切都被视为不再属于if
有条件的,因此独立于它。
当然有一个例外...
一个重要的怪癖:在()
一个for
循环中,分号仅在第一个和第二个语句之后,从不在第三个之后:
for (var i=0; i < 10; i++) {/*actions*/} // correct
for (var i=0; i < 10; i++;) {/*actions*/} // SyntaxError
如何修正你的分号
在Codecademy代码编辑器中构建的JavaScript语法校对工具JSLint在找到不必要的分号(或缺少的分号)方面做得相当不错。
它会显示代码行中的黄色警告三角形。将鼠标悬停在三角形上会告诉您是否有一个缺少的分号或不必要的分号。您通常可以信任这些警告,直到您开发出使用分号在哪里的直觉。
本文章转载自 瑞恩·布宾斯基的codecademy博客~
原文链接:https://www.codecademy.com/blog/78