2021年5月29日

コード構造

最初に学ぶのは、コードの構成要素です。

ステートメント

ステートメントは、アクションを実行する構文構造とコマンドです。

すでにステートメントalert('Hello, world!')を見てきました。これは「Hello, world!」というメッセージを表示します。

コードには必要なだけステートメントを含めることができます。ステートメントはセミコロンで区切ることができます。

たとえば、ここでは「Hello World」を2つのアラートに分割しています

alert('Hello'); alert('World');

通常、ステートメントはコードを読みやすくするために別々の行に記述されます

alert('Hello');
alert('World');

セミコロン

ほとんどの場合、改行がある場合はセミコロンを省略できます。

これも機能します

alert('Hello')
alert('World')

ここで、JavaScriptは改行を「暗黙の」セミコロンとして解釈します。これは自動セミコロン挿入と呼ばれます。

ほとんどの場合、改行はセミコロンを意味します。しかし、「ほとんどの場合」は「常に」を意味するわけではありません!

改行がセミコロンを意味しない場合があります。例えば

alert(3 +
1
+ 2);

コードは6を出力します。なぜなら、JavaScriptはここではセミコロンを挿入しないからです。行がプラス"+"で終わる場合、それは「不完全な式」であるため、そこにセミコロンを置くのは正しくないことは直感的に明らかです。そしてこの場合、それは意図したとおりに機能します。

しかし、JavaScriptが実際に必要な場所にセミコロンを想定「できない」場合があります。

そのような場合に発生するエラーを見つけて修正するのは非常に困難です。

エラーの例

そのようなエラーの具体的な例を見たい場合は、このコードを確認してください

alert("Hello");

[1, 2].forEach(alert);

今のところ、括弧[]forEachの意味について考える必要はありません。後で学習します。今のところ、コードを実行した結果だけを覚えておいてください。それはHello、次に1、次に2を表示します。

それでは、alertの後のセミコロンを削除してみましょう

alert("Hello")

[1, 2].forEach(alert);

上記のコードとの違いは1文字だけです。最初の行の末尾にあるセミコロンがなくなっています。

このコードを実行すると、最初 のHelloのみが表示されます(エラーが発生している可能性があり、コンソールを開いて確認する必要がある場合があります)。数字はもうありません。

これは、JavaScriptが大括弧[...]の前にセミコロンを想定していないためです。したがって、最後の例のコードは単一のステートメントとして扱われます。

エンジンがどのように見ているかは次のとおりです

alert("Hello")[1, 2].forEach(alert);

奇妙に見えますよね?この場合のこのようなマージは間違っています。コードが正しく動作するには、alertの後にセミコロンを付ける必要があります。

これは他の状況でも発生する可能性があります。

ステートメントが改行で区切られている場合でも、ステートメントの間にセミコロンを配置することをお勧めします。このルールはコミュニティで広く採用されています。もう一度注意しておきましょう。ほとんどの場合、セミコロンを省略することは*可能です*。しかし、特に初心者にとっては、それらを使用する方が安全です。

コメント

時間が経つにつれて、プログラムはますます複雑になります。コードの機能とその理由を説明する*コメント*を追加する必要があります。

コメントはスクリプトの任意の場所に配置できます。エンジンは単にコメントを無視するため、スクリプトの実行には影響しません。

1行コメントは、2つのスラッシュ文字//で始まります。

行の残りはコメントです。行全体を占めることも、ステートメントの後に続くこともできます。

ここが好き

// This comment occupies a line of its own
alert('Hello');

alert('World'); // This comment follows the statement

複数行コメントはスラッシュとアスタリスク/*で始まり、アスタリスクとスラッシュ*/で終わります。

このように

/* An example with two messages.
This is a multiline comment.
*/
alert('Hello');
alert('World');

コメントの内容は無視されるため、/* … */内にコードを配置しても実行されません。

コードの一部を一時的に無効にするのは便利な場合があります

/* Commenting out the code
alert('Hello');
*/
alert('World');
ホットキーを使用してください!

ほとんどのエディターでは、Ctrl+/ホットキーを押すと1行コメント、Ctrl+Shift+/のようなものを押すと複数行コメントとしてコード行をコメントアウトできます(コードの一部を選択してホットキーを押します)。Macの場合は、Ctrlの代わりにCmdShiftの代わりにOptionを試してください。

ネストされたコメントはサポートされていません!

別の/*...*/内に/*...*/があってはなりません。

そのようなコードはエラーで停止します

/*
  /* nested comment ?!? */
*/
alert( 'World' );

遠慮なくコードにコメントを付けてください。

コメントはコード全体のフットプリントを増やしますが、それはまったく問題ありません。実稼働サーバーに公開する前にコードを縮小するツールはたくさんあります。コメントは削除されるため、動作中のスクリプトには表示されません。したがって、コメントは本番環境に悪影響を及ぼしません。

チュートリアルの後半には、より良いコメントの書き方も説明するコード品質の章があります。

チュートリアルマップ

コメント

コメントする前にこれを読んでください…
  • 改善のための提案がある場合は、コメントする代わりにGitHubのissueまたはプルリクエストを送信してください。
  • 記事の内容が理解できない場合は、詳しく説明してください。
  • 数語のコードを挿入するには、<code>タグを使用し、数行の場合は<pre>タグで囲み、10行を超える場合はサンドボックス(plnkrjsbincodepen…)を使用してください。