2021年12月15日

条件分岐: if, '?'

時には、条件に基づき異なるアクションを実行する必要があります。

そのための if 文と、 “疑問符” 演算子とも呼ばれる条件付き演算子(3項演算子) "?" があります。

“if” 文

“if” 文は与えられた条件を評価します。結果が true であればコードを実行します。

例:

let year = prompt('In which year was ECMAScript-2015 specification published?', '');

if (year == 2015) alert( 'You are right!' );

上の例は、シンプルな等価チェック(year == 2015)ですが、より複雑にすることもできます。

実行する文が複数ある場合、コードブロックを波括弧で囲む必要があります。:

if (year == 2015) {
  alert( "That's correct!" );
  alert( "You're so smart!" );
}

たとえ1つの文しかない場合でも if を使用するときは波括弧 {} でコードブロックを囲むことを推奨します。これは可読性を向上させます。

Boolean 変換

if (…) 文は括弧の中の式を評価し、Boolean型に変換します。

チャプター 型変換 の変換ルールを思い出してみましょう:

  • 数値 0, 空文字 "", null, undefined そして NaNfalse になります。そのため、これらは “偽とみなされる” 値とよばれています。
  • 他の値は true になるため、“真とみなされる” 値と呼ばれます。

さて、下のコードですがこの条件は決して実行されません:

if (0) { // 0 は偽
  ...
}

また、この条件は – 常に処理されます:

if (1) { // 1 は真
  ...
}

次のように事前評価されたBool値を if に通すこともできます:

let cond = (year == 2015); // == は true または false を評価する

if (cond) {
  ...
}

“else” 句

if 文は任意の “else” ブロックを持つ場合があり、それは条件が偽の場合に実行されます。

例: