关于每句代码最后要不要加上分号的问题
有这么一个特征:如果一条语句以
“(”、“[”、“/”、“+”、或“-”
开始,那么它极有可能和前一条语句合在一起解释。
也就是说,在写javascript的时候,如果每条语句都独自写成一行,是不需要写分号的,但是下一行如果遇到上面提到的符号,javascript可能会与下一行合并解释,此时就需要用分号来表明这是两个语句了。
具体看下面的案例:
以“(”开头
a = b
(function(){
})()
//=============================================
//此时js会把上面的语句解释成:
a = b(function() {
})();
以“[”开头
a = function() {
}
[1,2,3].forEach(function(item) {
});
//=============================================
//此时js会把上面的语句解释成:
a = function() {
}[1,2,3].forEach(function(item) {
});
以“/”开头
a = "abc"
/[a-z]/test(a)
//=============================================
//此时js会把上面的语句解释成:
a = "abc"/[a-z].text(a);
以“+”或者“-”开头
a = b
+ c
//=============================================
//js会把上面的语句解释成:
a = b + c;
a = b
- c
//=============================================
//此时js会把上面的语句解释成:
a = b - c;
此外,如果在return、break、continue、throw等关键字后面换行,javascript会在换行处填补分号。
例如:
return
{
a : 1
}
//=================================
//此时js会把上面的语句解释成:
return;
{
a : 1
}
如果自增++、自减–作为表达式的后缀时,表达式最好写在同一行,否则会报错
如下:
x
++
y
//上面的语句并不会被解释成
x++;
y;
//而会被解释成
1
2
x;
++y;
结论:加上不碍事。。。