if...else
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
if...else 文は、指定された条件が真値ならば文を実行します。条件が偽値なら、オプションの else 節にあるもう一方の文を実行します。
試してみましょう
function testNum(a) {
let result;
if (a > 0) {
result = "positive";
} else {
result = "NOT positive";
}
return result;
}
console.log(testNum(-5));
// Expected output: "NOT positive"
構文
if (condition)
statement1
// else 節付き
if (condition)
statement1
else
statement2
conditionstatement1-
condition が真値の場合に実行される文です。さらにネストされた
if文を含む、どんな文であってもかまいません。複数の文を実行するためには、それらの文をグループ化するためにブロック文 ({ /* ... */ }) を使用してください。実行する文がない場合は、空文を使用してください。 statement2-
conditionが偽値で、かつelse節が存在するなら実行される文です。ブロック文およびさらにネストされたif文を含む、どんな文であってもかまいません。
解説
複数の if...else 文をネストすることで、 else if 節を作成することができます。 JavaScript では(1 単語の)elseif キーワードがありませんので注意してください。
if (condition1)
statement1
else if (condition2)
statement2
else if (condition3)
statement3
// …
else
statementN
これがどのように動作するか理解するために、ネストが適切にインデントされていたらどのように見えるかを示します。
if (condition1)
statement1
else
if (condition2)
statement2
else
if (condition3)
statement3
// …
節の中で複数の文を実行するためには、それらの文をグループ化するためにブロック文 ({ ... }) を使ってください。
if (condition) {
statements1
} else {
statements2
}
ブロックを使用しないと、特にコードが手作業で整形されている場合、混乱した動作になることがあります。
function checkValue(a, b) {
if (a === 1)
if (b === 2)
console.log("a is 1 and b is 2");
else
console.log("a is not 1");
}
このコードは何の問題もないように見えますが、checkValue(1, 3) を実行すると "a is not 1" というログを出力します。これは、dangling else の場合、else 節は最も近い if 節に接続されるからです。したがって、上記のコードを適切なインデントで記述すると、次のようになります。
function checkValue(a, b) {
if (a === 1)
if (b === 2)
console.log("a is 1 and b is 2");
else
console.log("a is not 1");
}
一般的な良い実践としては、常にブロック文を使用し、特に入れ子の if 文を含むコードでは、ブロック文を使用することをお勧めします。
function checkValue(a, b) {
if (a === 1) {
if (b === 2) {
console.log("a is 1 and b is 2");
}
} else {
console.log("a is not 1");
}
}
プリミティブの論理値である true および false を Boolean オブジェクトの真性や偽性と混同しないでください。 false, undefined, null, 0, -0, NaN, 空文字列 ("") のいずれでもない値、および任意のオブジェクトは(
false の値を持つ Boolean オブジェクトを含め)、条件として使用されたときに真値と解釈されます。例えば以下のような場合です。
const b = new Boolean(false);
if (b) {
console.log("b is truthy"); // この条件式は truthy です
}
例
>if...else の使用
if (cipherChar === fromChar) {
result += toChar;
x++;
} else {
result += clearChar;
}
else if の使用
JavaScript に elseif 構文はありませんので注意してください。 else と if の間に空白を置いて記述してください。
if (x > 50) {
/* 何かを行う */
} else if (x > 5) {
/* 何かを行う */
} else {
/* 何かを行う */
}
条件式の中での代入
x = y のように代入を条件とする if...else を持つことは、稀であるはずです。
if (x = y) {
/* 何かを行う */
}
しかし、稀にそのようなことをしたくなった場合、while のドキュメントの代入を条件として使用の節に、知っていて従うべき、一般的に良い実践を示した例を紹介しています。
仕様書
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-if-statement> |
ブラウザーの互換性
Loading…