2011-08-03 18 views
4

私はjavascriptコードを見て、使用していますが、両方とも ';'ステートメントの終わりから。いくつかのケースで必要とされ、他のケースでは必要とされないのですか?そうであれば、いくつかの例を挙げることができますし、一般的な標準ではない場合は、 ';'またはしないことに...それは質問ですか?javascriptに ';'が必要ですコード行の終わりに?

+0

これは_many_ [その他の質問](http://stackoverflow.com/search?q=javascript+semicolon)の複製です。 – nnnnnn

答えて

11

JavaScriptはセミコロン挿入と呼ばれる(一般に嫌味)メソッドを使用しています。セミコロン挿入を使用すると、セミコロンを省略できます。

セミコロンを挿入できる場所と挿入できない場所の規則は広範囲で、かなりよくカバーされています。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

関連する問題