JavaScript のセミコロンはステートメントの終わりを表しますが、JavaScript には自動セミコロン挿入規則があるため、通常の状況では改行によってセミコロンが生成されますが、実際にはそうではありません。つまり、JavaScript の改行時にセミコロンが生成されるか生成されないかは、主に上の行と下の行に依存します。そのため、経験豊富なプログラマーでも頭を悩ませることがあります。
ECMAScriptの自動セミコロン挿入ルールにも対応する説明があります: 空のステートメント、変数ステートメント、式ステートメント、do-while ステートメント、Continue ステートメント、break ステートメント、return ステートメント、および throw ステートメント。これらの特定の ECMAScript ステートメントは、 で区切る必要があります。番号が終わります。これらのセミコロンは、ソース コード テキスト内に常に明示的に表示できます。便宜上、ソース コード テキスト内のこれらのセミコロンは、場合によっては省略される場合があります。つまり、これらのステートメントの最後にハード セミコロンを入力する必要はなく、JavaScript によってステートメントの最後にハード セミコロンが自動的に挿入されます。
ECMAScript のセミコロン自動挿入ルールの詳細を知りたい場合は、次のリンクを参照してください。
練習すれば真実がわかります。次の例を見てみれば、セミコロンの自動挿入がそれほど難しくないことがわかるでしょう。ちょっとした不注意で頭痛を引き起こす可能性があります。
帰還による殺人
引用した内容は以下の通りです。 関数テスト(){ |
a+b の値を返す関数は一見問題ないように見えますが、アラートを実行した場合の結果は未定義です。セミコロンの自動挿入ルールにより、return文の後に改行があると自動的にセミコロンが挿入され、戻り値がない場合も分かりやすくなります。行を折り返す必要がある場合は、次のようにします。
引用した内容は以下の通りです。 関数テスト(){ (関数 (){ |
for ステートメントのヘッダー内の 2 つのセミコロンは、自動的には挿入されません。
引用した内容は以下の通りです。 for( var a=1,b=10 // セミコロンは自動的に挿入されません |
ECMAScript にも上記の説明があります。セミコロンを空のステートメントとして解釈すること、および for ステートメントの () にセミコロンを自動的に挿入しないことは特殊なケースであり、自動挿入ルールによって管理されません。
JavaScript は型指定が弱い言語ですが、ECMAScript の自動セミコロン挿入ルールを完全に理解するのは困難です。ただし、コードを書く良い習慣を身につけ、セミコロンを手動で挿入して習慣を形成することで、これらの問題を回避できると同時に、プログラムのデバッグやコードの読み取りに非常に役立ちます。
同時に、ECMAScript はプログラマーにいくつかのアドバイスも提供します。
++ または — は、オペランドと同じ行に指定する必要があります。
return または throw ステートメント内の式は、return または throw と同じ行に記述する必要があります。
Break または continue ステートメント内のラベルは、break または continue と同じ行に表示される必要があります。