2011-08-03 43 views
4

我已經看到並使用了JavaScript代碼,它們都具有並省略';'從發言結束。他們在某些情況下而不是在其他情況下需要嗎?如果可以的話,你可以舉一些例子,如果不是通用標準,使用';'或不是...那..是問題?does javascript require';'在一行代碼的末尾?

+0

這是_many_ [其他SO問題](http://stackoverflow.com/search?q=javascript+semicolon)的副本。 – nnnnnn

回答

11

JavaScript使用名爲Semicolon Insertion的(通常不喜歡的)方法,它可以讓您省略分號。

您可以和不能插入分號的規則非常廣泛,覆蓋面也很好here

一般來說,不要依賴分號插入。這是一個考慮不周的功能,它會在你幫助你之前傷害你。

不僅應該總是使用分號,還應該習慣於將您的{大括號放在同一行上,因爲分號插入實際上可能會誤解您的意思。

例如,假設我想從一個函數返回一個JavaScript對象:

function f() { 
    return { "a":"b", "c":"d" } // works fine 
} 

function g() { 
    return       // wrong!!! 
    { 
     "a":"b", 
     "c":"d" 
    } 
} 

如果我把{一個新行(正如我在g一樣),return語句實際上會在它後面插入一個分號,破壞你所說的意思。

總的來說,分號插入是一個不好的功能,你不應該依賴它。

+0

我唯一不同意的部分是「它是一個思路不清的特性」。 10美元表示,認爲它的人比你和我放在一起更聰明,並且考慮它會比你和我放在一起更長。 ES標準是由頂尖組合編寫的。 sci.s.歡迎您不同意他們的決定,但要說沒有想到這是對標準程序的完全誤解。 – davin

+0

+在某些時候,某個人太聰明瞭,決定用JavaScript編寫VB腳本以及分號插入是天生的......程序員的地獄之路是由這種「酷」的想法鋪平的...... –

+0

首先是正確的並鏈接到一個很好的參考。我只能+1。 – Quentin

1

使用;標記語句結束。 Javascript遵循C族語言設置的語法主題,並且;是語句結尾的分隔符。

你看過哪些代碼省略了這個?

如果在一行之後沒有更多的代碼,;在技術上是可選的。無論如何,你應該包括它。

+0

';'(技術上來說,不好的風格)在很多情況下是可選的。 – Quentin

1

總是使用分號,這使得代碼更易於閱讀。現在我不知道有什麼情況可以省略。

+0

有更多的情況下,它可以省略,而不是在必要的地方。 (假設你不習慣在同一行放置多個語句,這需要分號但很難閱讀。) – nnnnnn