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); // 合格
JavaScriptif 文との違い(置き換え方)
// 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 以外でも判定されます。空文字
''や0、null、undefinedは 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の符号に応じて「正」「負」「ゼロ」を返すコードを三項演算子を使って書いてください。
