JavaScript隐性分号

2017-01-13  本文已影响0人  破书

理论上可以通过换行符分隔单条语句而不会导致错误,即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并不是函数而会导致函数没有声明的错误,但这并不是语法错误,然而这也不是我们通常想要的结果,因此有一种编码风格会在所有以“(”,“[”,“+”,“\”符号开头的语句前再添加一个分号。

我习惯不省略分号的编码习惯。
上一篇 下一篇

猜你喜欢

热点阅读