首先,咱们来理解下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;