条件演算子のネスト | 条件演算子(三項演算子) | JavaScript 超完全入門 基本から発展までのすべて

スポンサーリンク
スポンサーリンク

条件演算子のネストとは?

条件演算子(?:)は、シンプルな条件分岐を1行で記述できる便利な演算子です。さらに、複数の条件を評価するために、条件演算子をネストして使うことも可能です。ネストとは、1つの条件演算子の中に、別の条件演算子を含めることです。これにより、複数の条件を1つの表現で記述することができます。

基本的な条件演算子のネスト例

次に、条件演算子をネストして、複数の条件を評価する例を見てみましょう。

let score = 85;
let grade = score >= 90 ? "A" :
            score >= 80 ? "B" :
            score >= 70 ? "C" :
            "F";
console.log(grade); // "B"

この例では、スコアに応じて評価が決定されます。90以上であれば「A」、80以上であれば「B」、70以上であれば「C」、それ以外は「F」という評価になります。このように、条件演算子をネストすることで、1つの式で複数の条件を扱うことができます。

ネストされた条件演算子の仕組み

条件演算子のネストは、次のような構造になっています。

条件1 ? 結果1 : 条件2 ? 結果2 : 条件3 ? 結果3 : 結果4;

最初の条件がtrueであれば結果1が返され、falseの場合には次の条件が評価されます。このように、連続して条件を評価していき、最終的な結果を得ることができます。

ネストされた条件演算子の例とif文との比較

次に、ネストされた条件演算子とif文を使った同じ条件分岐を比較してみます。

// 条件演算子のネスト
let score = 75;
let grade = score >= 90 ? "A" :
            score >= 80 ? "B" :
            score >= 70 ? "C" :
            "F";

// if文で同じ条件を記述
let grade2;
if (score >= 90) {
    grade2 = "A";
} else if (score >= 80) {
    grade2 = "B";
} else if (score >= 70) {
    grade2 = "C";
} else {
    grade2 = "F";
}
console.log(grade);  // "C"
console.log(grade2); // "C"

この例では、条件演算子を使うことで1行で条件分岐を実現していますが、if文では複数行のコードが必要です。条件がシンプルであれば条件演算子の方が効率的ですが、複雑な条件式ではif文を使った方が可読性が向上する場合があります。

ネストされた条件演算子の注意点

条件演算子をネストすることで、複数の条件を1行で記述できますが、コードが複雑になると可読性が低下する可能性があります。ネストされた条件が多くなる場合や、条件自体が複雑になる場合は、if文を使用する方が分かりやすくなることが多いです。

条件演算子のネストを使うべき場面

条件演算子のネストは、次のような場面で役立ちます。

  • シンプルな複数条件の評価を1行で記述したい場合
  • 条件式が短く、わかりやすい場合
  • 関数の戻り値として簡単に条件を評価したい場合

逆に、複雑な条件を扱う場合や、複数の処理を行う場合はif文を使う方が適しています。

if文のほうが可読性が高いため、原則、if文を使うほうがよいでしょう。

まとめ

条件演算子のネストを使うことで、複数の条件を簡潔に記述することができます。ただし、条件が多くなると可読性が低下するため、適切な場面で使うことが重要です。簡単な条件分岐には条件演算子を、複雑な条件にはif文を使い分けることで、コードを効率的かつわかりやすく保つことができます。