条件 (三項) 演算子は JavaScript では唯一の、3 つのオペランドをとる演算子です。この演算子は、 if 文のショートカットとしてよく用いられます。
このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力していただける場合は、 https://github.com/mdn/interactive-examples をクローンしてプルリクエストを送信してください。
構文
condition ? exprIfTrue : exprIfFalse
引数
condition- 値が条件として使用される式です。
exprIfTrueconditionが truthy の値 (trueと等しいか、trueに変換できる値) と評価された場合に評価される式です。exprIfFalseconditionが falsy の値 (falseと等しいか、falseに変換できる値) と評価された場合に評価される式です。
解説
false についていえば、 falsy になる可能性がある式は null, NaN, 0, 空文字列 (""), undefined です。 condition がこのうちの何れかであれば、条件演算子の結果は exprIfFalse になります。
単純な例です。
var age = 26; var beverage = (age >= 21) ? "ビール" : "ジュース"; console.log(beverage); // "ビール"
よくある使い方の一つに、 null になる可能性がある値を扱うというものがあります。
function greeting(person) {
var name = person ? person.name : "お客さん";
return "やあ、" + name;
}
console.log(greeting({name: 'アリス'})); // "やあ、アリス"
console.log(greeting(null)); // "やあ、お客さん"
メモ: オプション連鎖演算子がこのような場面を扱うために設計されています。執筆時点 (2019年7月時点) で、これはまだ試験的であり、実装されていません。
条件の連鎖
三項演算子は右結合で、すなわち以下のような方法で if … else if … else if … else の連鎖と同様に「連鎖」させることができます。
function example(…) {
return condition1 ? value1
: condition2 ? value2
: condition3 ? value3
: value4;
}
// 以下のものと同等です。
function example(…) {
if (condition1) { return value1; }
else if (condition2) { return value2; }
else if (condition3) { return value3; }
else { return value4; }
}
仕様書
ブラウザーの互換性
このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 https://github.com/mdn/browser-compat-data をチェックアウトしてプルリクエストを送信してください。
Update compatibility data on GitHub
| デスクトップ | モバイル | サーバー | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Conditional operator (c ? t : f) | Chrome 完全対応 1 | Edge 完全対応 12 | Firefox 完全対応 1 | IE 完全対応 3 | Opera 完全対応 あり | Safari 完全対応 あり | WebView Android 完全対応 1 | Chrome Android 完全対応 18 | Firefox Android 完全対応 4 | Opera Android 完全対応 あり | Safari iOS 完全対応 あり | Samsung Internet Android 完全対応 1.0 | nodejs 完全対応 あり |
凡例
- 完全対応
- 完全対応