JavaScript | 条件演算子(三項演算子)

JavaScript JavaScript
スポンサーリンク

JavaScript の条件演算子(三項演算子)

はじめての人に向けて、やさしく説明します。条件演算子は「もし〜ならA、そうでなければB」を1行で書ける便利な書き方です。まずは基礎を抑えてから、例題で手を動かしてみましょう。


基本の形と意味

条件式 ? 式1 : 式2
JavaScript
  • 条件式: true(真)か false(偽)になる式。例:score >= 60
  • 式1: 条件式が true のときの結果。例:'合格'
  • 式2: 条件式が false のときの結果。例:'不合格'

例:

const score = 75;
const message = score >= 60 ? '合格' : '不合格';
console.log(message); // 合格
JavaScript

if 文との違い(置き換え方)

// if 文
let message;
if (score >= 60) {
  message = '合格';
} else {
  message = '不合格';
}

// 三項演算子
const message = score >= 60 ? '合格' : '不合格';
JavaScript
  • ポイント: 三項演算子は「値を選ぶ」場面で強い。複雑な処理は if 文で書いた方が読みやすい。

よくある使いどころ(実用例)

  • ラベル選択:
const age = 19;
const label = age >= 18 ? '大人' : '未成年';
JavaScript
  • デフォルト表示:
const name = '';
const displayName = name ? name : 'ゲスト';
JavaScript
  • 状態による表示文言:
const isLoggedIn = false;
const text = isLoggedIn ? 'ログアウト' : 'ログイン';
JavaScript
  • 数値の符号判定:
const num = -3;
const sign = num > 0 ? '正' : num === 0 ? 'ゼロ' : '負';
JavaScript

初心者がつまずきやすいポイント

  • 値を返す道具: 三項演算子は「どっちの値にするか」を決めるためのもの。複数行の処理や副作用(console.log を何回も)を入れるのは向いていません。
  • 読みやすさ: ネスト(入れ子)しすぎると読みにくくなります。1回までが目安。
  • truthy / falsy: 条件式は true/false 以外でも判定されます。空文字 ''0nullundefined は falsy(偽)です。
const input = '';
const label = input ? '入力あり' : '未入力'; // 未入力
JavaScript
  • 比較演算子の使い分け: == ではなく === を基本に。型の自動変換による予期せぬ挙動を避けられます。
'5' == 5   // true(非推奨)
'5' === 5  // false(推奨)
JavaScript

例題で練習

例題1:点数で評価を返す

  • 条件: 80点以上は「A」、60–79点は「B」、それ未満は「C」
const score = 72;
const grade = score >= 80 ? 'A' : score >= 60 ? 'B' : 'C';
console.log(grade); // B
JavaScript
  • コツ: 条件は「高い方から順に」並べるとわかりやすい。

例題2:表示名の決定(空ならゲスト)

  • 条件: name が空文字や null なら「ゲスト」
const name = '';
const displayName = name ? name : 'ゲスト';
console.log(displayName); // ゲスト
JavaScript
  • 発展: ES2020 以降は「null 合体演算子」でも書けます(参考) const displayName = name ?? 'ゲスト'; // null/undefined のときだけデフォルト

例題3:在庫メッセージの切り替え

  • 条件: 在庫数が1以上なら「購入可」、0なら「在庫なし」
const stock = 0;
const message = stock > 0 ? '購入可' : '在庫なし';
console.log(message); // 在庫なし
JavaScript

例題4:ボタン色の切り替え(状態による色選択)

  • 条件: 有効なら青、無効ならグレー
const enabled = true;
const buttonColor = enabled ? '#1976d2' : '#9e9e9e';
JavaScript

書き分けの判断基準

  • 三項演算子を使うとよい場面:
    • 短い値の選択: ラベル、メッセージ、色、クラス名など
    • 1行で十分な条件分岐: 読みやすさが保てる範囲
  • if 文にするべき場面:
    • 複数の処理がある: ログ、計算、関数呼び出しが複数
    • 条件が複雑: ネストが深くなる、コメントが必要
    • 副作用を伴う: 値選びではなく動作の分岐

小さなチェックリスト

  • 条件は明確? 曖昧な判定(==)は避ける
  • ネストしすぎてない? 2段以上は if 文を検討
  • 値の型は揃ってる? '合格'true のような混在を避ける
  • 後で読んでもわかる? 変数名や条件を具体的に

仕上げの練習問題

  • 問題1: 体温 temp が 37.5 以上なら「発熱」、それ未満なら「平熱」を返す変数 status を三項演算子で作ってください。
  • 問題2: ログイン状態 isLoggedIn に応じて、ボタン文言を「ログアウト」または「ログイン」にするコードを書いてください。
  • 問題3: 数値 n の符号に応じて「正」「負」「ゼロ」を返すコードを三項演算子を使って書いてください。
タイトルとURLをコピーしました