理论上可以通过换行符分隔单条语句而不会导致错误,即JavaScript会自动在换行符前添加分号。
然而JavaScript不会在所有换行处都添加分号,只有当试图合并下一行的语句会导致语法错误时才会自动添加分号。如
var
a
=
12
+
3
会被解析成
···
var a=12+3;
但是有两个例外,1,当遇上return,break和continue时,如果没有分号而换行,Javascript会自动添加分号而不会考虑下一行的语句,如:
return
a
会被解析成
return; a;
而不是
return a;
2,当++和--两个运算符作为后缀运算符时,省略分号会导致JavaScript认为它们是前缀运算符,例如:
var a=10
a
++
它不会被解析成
var a=10;
a++;
而是会被解析成:
var a=10;
a;
++;
虽然这样会造成语法错误。
注意,如果一条语句以“(”,“[”,“\”,“+”开始,在省略分号的编码风格中,它们既有可能会被连接到前一行代码的后面一起解析,这往往是我们不想要的,比如:
var a=b+f
(x+y)
会被解析成
var a=b+f (x+y);
变成了一个函数调用语句,虽然通常f并不是函数而会导致函数没有声明的错误,但这并不是语法错误,然而这也不是我们通常想要的结果,因此有一种编码风格会在所有以“(”,“[”,“+”,“\”符号开头的语句前再添加一个分号。
我习惯不省略分号的编码习惯。