在打算寫這篇文章以前,我是一個分號黨,在寫這篇文章以後,轉爲了無分號黨。以前是寫分號是編輯器語法較檢所養成的強迫症,如今觀念的轉變,是由於看了很多大神的討論後,以爲javascript語句後寫分號除了增大工做量外,意義不大。javascript
在說要不要寫分號以前,先了解一下javascript自動填補分號的規則。前端
在《javascript權威指南》中有一段話「若是一條語句以「(」、「[」、「/」、「+」、或「-」開始,那麼它極有可能和前一條語句合在一塊兒解釋。」,寫javascript的時候,若是每條語句都獨自寫成一行,是不須要寫分號的,可是下一行若是遇到上面提到的符號,javascript可能會與下一行合併解釋。其中以「/」、「+」和「-」開頭的語句在實現項目中比較少見,以「(」和「[」開頭的則很是常見。下面各找了一個例子來講明。vue
a = b (function() { })()
javascript會解釋成:java
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會解釋成,接着就報錯了:ide
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會在換行處填補分號。如:spa
return { a: 1 }
會解釋成:code
return; { a: 1 }
若是「++」或「–」運算符做爲表達式的後綴時,表達式應該寫在同一行,不然也會解釋有誤
例如:
x ++ y
會解釋成:
x; ++y;
而不是
x++; y;
對於究竟要不要寫分號這個問題,我以前也沒有細想,看到編輯器有提示就寫了,也沒有想過寫與不寫有什麼區別,甚至在寫這篇文章時,思路仍是要將寫分號看成團隊代碼的規範。後來看到知乎上vuejs的做者尤雨溪和前端大神賀師俊的回答後,我對寫分號的想法徹底顛覆了。
對於老是寫分號的缺陷,賀思俊的總結很到位,他總結的3點缺陷以下:
而對於上面提到的五種符號須要加分號的狀況,完成能夠用工具來幫咱們自動完成,如今看來寫分號除了知足強迫症外,好像真的沒有什麼必要了