关于“我应该使用分号吗?”有很多问题。和“分号注射如何工作?”,但我想找一个能够尽可能避免使用分号的编码人员的无FUD建议。
如果有人像izs或Bootstrap开发者那样选择不用分号编写Javascript,在什么条件下他必须添加分号,他还应该做些什么来确保他的代码不会失败?
假设您打算使用换行符代替分号,最大的危险是您可以将两行组合成一个表达式。
避免这种情况的建议是:
当一行以括号
(
或[
开头时或与算术运算符
+
-
或/
然后在它前面放一个分号
;
。(请注意,
++
--
和//
都是安全的,没有分号,但regexp文字/.../
不是。)
遵循该规则将阻止:
// BAD
a = b + c
(d + e).print()
从被解析为:
a = b + c(d + e).print()
解决方案:
// SAFE
a = b + c
;(d + e).print()
资料来源:
出于类似的原因,在库脚本的开头和结尾也建议使用分号,这将被释放到野外。实际上,无论您在脚本中使用何种样式,都建议使用此方法。
在这个例子中有一个IIFE:
// my-library.js
;(function(){
...
})();
(...)
不会尝试在脚本的尾端调用未终止的表达式,该表达式已在您之前连接。作为替代方案,Bootstrap带有+
,不包裹在(...)
的IIFE,并以;
结束。其他变化导致!
而不是+
或;
。
唯一需要的分号是传统的for循环:
for (var i=0; i<10; i++) { // good luck doing that without semicolons!
当你在一行上放置多个语句时(尽管通常不建议这样做,但出于可读性原因):
x = obj[k]; delete obj[k]; return asChar(x)