私の妻はCodecademy(Javascript)を使って作業していて、セミコロンに不満を感じていました。彼女は、どの行をセミコロンで終わらせる必要があるかを私に尋ねました。彼女はまだ始めたばかりなので、ここで「ステートメント」や「表現」などを怖がらせたくありませんでした。セミコロンを気にしないように彼女に言っただけです。結局のところ、JSです;)
それで、私はそれをどのように説明すべきでしたか?
私の妻はCodecademy(Javascript)を使って作業していて、セミコロンに不満を感じていました。彼女は、どの行をセミコロンで終わらせる必要があるかを私に尋ねました。彼女はまだ始めたばかりなので、ここで「ステートメント」や「表現」などを怖がらせたくありませんでした。セミコロンを気にしないように彼女に言っただけです。結局のところ、JSです;)
それで、私はそれをどのように説明すべきでしたか?
if(test)
でしょう(確かに-それは無効ではありません、あなたは本当にそれをすぐに終わらせたくないだけです)。同様にfor(a;b;c)
(ただし、内部の各ものfor
は物です)。x = 2 + 1 + 3 + 4 + 5 * 10 + 2;
単一のものであるか、またはあなたは全体の合計を持っていないでしょう。3行または4行を超えても、1つの合計(1つのもの)にする必要があります。単純なルールは、すべてのステートメントがセミコロンで終了する必要があるということです。式、ブロック、関数宣言などはセミコロンで終わりません。たぶん、次のことが役立ちます。
ブロックはセミコロンで終わらない:
if ( /*condition */ ) { // start of block, no semicolon
... // function body
} // end of block, no semicolon
do..while、while、for..inなどの他のブロックについても同じことが言えます。
関数宣言にはセミコロンがありません(ブロックを使用します):
function foo() { // start of block
... // code, may be statements with semicolons and more blocks
} // end of block, no semicolon
ブロックのように見えますが、そうではないもの:
// Object literal isn't a block, it's a statement so uses {}
var obj = {name: 'fred', sex: 'male'};
// Object literal over several lines has one semicolon at the end
var obj = {
name: 'fred',
sex: 'male'
};
ステートメントとしての関数式:
(function(){...}()); // expression in (), the
// terminating semicolon makes it a statement
数行にわたって:
(function(){ // Start of block (function body) doesn't use semicolon
...
}() // block end, no semicolon. Can't end statement here
// (unbalanced parenthesis) so no semicolon after ()
); // but end of statement does need semicolon
関数式は単なる式である可能性があることに注意してください。
たとえば、関数式を呼び出した結果を渡す関数呼び出し(関数式本体のセミコロンで終了するステートメントに注意してください):
foo( (function(){alert('hey'); return 'ho';}()) );
function foo(s) {
alert(s);
}
セミコロンが必要かどうかをテストするには、2行のコード間の改行を削除します。
var a = 'foo';
alert(a);
改行を削除します。
var a = 'foo'; alert(a); // works
セミコロンを削除します。
var a = 'foo' alert(a); // fails
私のJavascriptは少し錆びていますが、}または{で終わっていない限り、すべての行を回避できると思います。次に、各ステートメントが新しい行にあることを確認します。ただし、元の質問を考えると、問題ではないと思います。
また、行をセミコロンで終わらせないのは悪い考えです。実際に動作しない場合があります。
ほとんどの場合、問題はないはずです。別の回答に投稿された記事はそれについてよく読んでいますが、それでも私はセミコロン*への愛情を支持しています。