传统的编程语言中分号是不可省略的,但在看JavaScript代码时,新手常常会发现很多知名的大牛们都省略了分号,为什么会这样呢?其实是因为JavaScript的自动插入分号技术,大多数情况下分号是可以省略的,下面说说自动插入分号的规则。

规则一:JavaScript仅在“}”后、一行结束时以及一段程序结束处自动添加分号

如下面一组代码:

function right(x) { x++; return x }

function wrong(x) {x++ return x}

规则二:JavaScript仅在下一行第一个字符无法解析时自动添加分号

若第二行为(、[、+、-或/开头时,JavaScript不会自动添加分号,如

a=b
(f(n))

就相当于

a=b(f(n))

这一点在多个JavaScript文件合并时尤为要注意,假设两个主体为立即执行函数的JavaScript文件合并:

(function() {
  ...
})()
;(function() {
  ...
})()

这种情况下分号不能省略,原理同上,但一般自动化工具会在此处添加分号。

规则三:for循环及空循环体的while不能省略分号

如 while(true);

最后我想说的是分号的省略与否完全是个人的编码风格,所以JS初学者不必死钻牛角尖,弄清楚原理才是最重要的。


simon_z
254 声望12 粉丝