首先,咱们来理解下 javascript 的主动填充规定
在说要不要写分号之前,先理解一下 javascript 主动填补分号的规定。
在《javascript 权威指南》中有一段话“如果一条语句以“(”、“[”、“/”、“+”、或“-”开始,那么它极有可能和前一条语句合在一起解释。”,写 javascript 的时候,如果每条语句都单独写成一行,是不须要写分号的,然而下一行如果遇到下面提到的符号,javascript 可能会与下一行合并解释。其中以“/”、“+”和“-”结尾的语句在实现我的项目中比拟少见,以“(”和“[”结尾的则十分常见。上面各找了一个例子来阐明。
以“(”结尾的状况:
a = b
(function() {})()
javascript 会解释成:
a = b(function() {})();
以“[”结尾的状况
a = function() {}
[1,2,3].forEach(function(item) {});
javascript 会解释成:
a = function() {}[1,2,3].forEach(function(item) {});
以“/”结尾的状况
a ='abc'
/[a-z]/.test(a)
冀望的后果为 true,然而 javascript 会解释成, 接着就报错了:
a =‘abc’/[a-z]/.test(a);
以“+”结尾的状况
a = b
+c
javascript 会解释成
a = b + c;
以“-”结尾的状况
a = b
-c
javascript 会解释成
a = b - c;
如果在 return、break、continue、throw 等关键字前面换行,javascript 会在换行处填补分号。如:
return
{a: 1}
会解释成:
return;
{a: 1}
如果“++”或“–”运算符作为表达式的后缀时,表达式应该写在同一行,否则也会解释有误
例如:
x
++
y
会解释成:
x;
++y;
而不是
x++;
y;