搜尋

首頁  >  問答  >  主體

javascript - 關於一個分號的問題,為什麼沒有分號就報錯了?

#輸出2

當把那個分號去掉,報錯

求問那個分號是起了什麼作用?為什麼去掉會報錯呢?

高洛峰高洛峰2835 天前637

全部回覆(3)我來回復

  • 我想大声告诉你

    我想大声告诉你2017-05-16 13:44:00

    不是分號的問題,
    而是如果沒有;號的阻斷, 解釋器直接把兩條語句合併成:

    var xx = function(){}[1,2,3].aa(22);

    在使用已()和[]為開頭的語句時, 要尤其註意, 因為這兩個操作符會優先和前面的表達式進行組合, ;號不能省

    在某些的;號則不是必須的, 例如;

    var a = 1, b=2
    a++
    b++

    這並不會報錯

    由於js 並沒有明確的對這樣的行為做出解釋, 而且頁容易混亂, 所以推薦的做法一般都是:
    不管需不需要;號隔間, 你最好在後尾都加上一句, 除非你明確知道(想要)導致的結果.
    這種做法稱作最佳實踐

    回覆
    0
  • PHP中文网

    PHP中文网2017-05-16 13:44:00

    function(){}[1,2,3] 回傳undefined

    回覆
    0
  • 怪我咯

    怪我咯2017-05-16 13:44:00

    這裡的分號應該表示的是這一語句結束吧?

    Array.prototype.aa = function(){console.log(2);};

    我覺得你寫成這樣就看得出來了。

    回覆
    0
  • 取消回覆