JavaScript 的分号是可省略的,因为 JavaScript 会自动填补分号,但只有在 JavaScript 遇到因为省略分号而无法解析的语句时,才会自动填补分号。
下面这个例子就省略了分号,但 JavaScript 引擎依然能解析,引擎就不会自动给代码加分号:
1var a2a3=435console.log(a); // 3
有两种情况 JavaScript 引擎会自动填补:
- break、return、continue 后接换行号会填补分号。
- ++ 和 — 前有换行号时,前面的语句会填补分号。
例如:
1function foo1() {2 return { bar: 0 };3}4function foo2() {5 return6 { bar: 0 };7}8foo1() // { bar: 0 }9foo2() // undefined
在这个例子中,如果 foo2
的 return
之后省略分号,会导致引擎无法解析,所以会自动加上。
1var x=2,y=1;2x3++4y5console.log(x); // 26console.log(y); // 2
在这个例子中,如果不加分号会变成 x++y
,这种语句引擎无法解析,所以也会自动在 x
之后加上分号。
建议加分号的原因:
- 避免代码执行效果不如意。
- 避免代码压缩有错误。
- 可以提高性能,因为解析器不用花时间去推测哪里应该加分号。
参考: