if 文は、指定された条件が truthy ならば文を実行します。条件が falsy なら、もう一方の文を実行することができます。
構文
if (condition) statement1 [else statement2]
statement1- condition が truthy なら実行される文です。さらにネストされた
if文を含む、どんな文であってもかまいません。複数の文を実行するためには、それらの文をグループ化するためにブロック文 ({ ... }) を使ってください。実行する文がない場合は、空文 を使用してください。 statement2conditionが falsy で、かつelse節が存在するなら実行される文です。ブロック文およびさらにネストされたif文を含む、どんな文であってもかまいません。
解説
複数の if...else 文をネストすることで、 else if 節を作成することができます。 JavaScript では elseif (1 単語) キーワードがありませんので注意してください。
if (condition1) statement1 else if (condition2) statement2 else if (condition3) statement3 ... else statementN
これがどのように動作するか理解するために、ネストが適切にインデントされていたらどのように見えるかを示します。
if (condition1)
statement1
else
if (condition2)
statement2
else
if (condition3)
...
節の中で複数の文を実行するためには、それらの文をグループ化するためにブロック文 ({ ... }) を使ってください。一般的に、ブロック文を常に使うのはよい習慣です。ネストされた if 文が絡むコードにおいて特にそうです:
if (condition) {
statements1
} else {
statements2
}
プリミティブな真偽値である true および false を Boolean オブジェクトの真偽性と混同しないでください。 false, undefined, null, 0, -0, NaN, 空文字列 ("") のいずれでもない値、および任意のオブジェクトは (false の値を持つ Boolean オブジェクトを含め)、条件として使用されたときに truthy と解釈されます。例えば以下のような場合です。
var b = new Boolean(false); if (b) // この条件式は truthy です
例
if...else の使用
if (cipher_char === from_char) {
result = result + to_char;
x++;
} else {
result = result + clear_char;
}
else if の使用
JavaScript に elseif 構文はありませんので注意してください。 else と if の間に空白を置いて記述します。
if (x > 50) {
/* 何かを行う */
} else if (x > 5) {
/* 何かを行う */
} else {
/* 何かを行う */
}
条件式の中での代入
代入はコードを眺めたときに等式と混同される可能性があるので、条件式の中で単純な代入を使わないほうが望ましいです。たとえば、次のコードを使わないでください。
if (x = y) {
/* 何かを行う */
}
もし条件式の中で代入を使う必要があるのなら、次の例のように、代入の周りに追加の括弧を書くのが一般的な習慣です。
if ((x = y)) {
/* 何かを行う */
}
仕様書
| 仕様書 |
|---|
| ECMAScript (ECMA-262) if statement の定義 |
ブラウザーの互換性
| デスクトップ | モバイル | サーバー | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
if...else | Chrome 完全対応 1 | Edge 完全対応 12 | Firefox 完全対応 1 | IE 完全対応 3 | Opera 完全対応 3 | Safari 完全対応 1 | WebView Android 完全対応 1 | Chrome Android 完全対応 18 | Firefox Android 完全対応 4 | Opera Android 完全対応 10.1 | Safari iOS 完全対応 1 | Samsung Internet Android 完全対応 1.0 | nodejs 完全対応 0.1.100 |
凡例
- 完全対応
- 完全対応