1. 程式人生 > 實用技巧 >寫 JavaScript 到底寫不寫分號呢???

寫 JavaScript 到底寫不寫分號呢???

其實我是不喜歡寫分號的,好不容易能不寫分號,像 python 一樣,多爽。

幾年前,各種各樣的書大致上都推薦你加分號。

幾年前,曾經由於構建工具有一些問題,導致不加分號可能會出問題。

jquery依然留著分號,vue原始碼不用分號, react原始碼規範需要分號。

不過,最關鍵的,還是看團隊的程式碼風格。

winter推薦寫,但是尤雨溪曾經在知乎說

真正會導致上下行解析出問題的 token 有 5 個:括號,方括號,正則開頭的斜槓,加號,減號。我還從沒見過實際程式碼中用正則、加號、減號作為行首的情況,所以總結下來就是一句話:一行開頭是括號或者方括號的時候加上分號就可以了,其他時候全部不需要。
哦當然再加個反引號。

可是寫分號已經習慣了,又何必花力氣改習慣去掉它。不加只要不寫出bug,也很好。
反正分號有和沒有,對eslint fix來說,只是瞬間的事。。。

不過在這裡,總結一下 no LineTerminator here 的語句。

  1. continue

    outer:for(var j = 0; j < 10; j++)
        for(var i = 0; i < j; i++)
            continue /*no LineTerminator here*/ outter
    
  2. break

    outer:for(var j = 0; j < 10; j++)
        for(var i = 0; i < j; i++)
            break /*no LineTerminator here*/ outter
    
  3. return

    function f(){
        return /*no LineTerminator here*/1;
    }
    
  4. ++ --

    i/*no LineTerminator here*/++
    i/*no LineTerminator here*/--
    
  5. throw | exception

    throw/*no LineTerminator here*/new Exception("error")
    
  6. async

    const f = x/*no LineTerminator here*/=> x*x
    
  7. 箭頭函式箭頭後面

    const f = x/*no LineTerminator here*/=> x*x
    
  8. yield

    function *g(){
        var i = 0;
        while(true)
            yield/*no LineTerminator here*/i++;
    }