条件 (三項) 演算子は JavaScript では唯一の、3 つのオペランドをとる演算子です。この演算子は、if 文のショートカットとしてよく用いられます。
構文
condition ? expr1 : expr2
引数
conditiontrueかfalseかを評価する式です。
expr1,expr2- 各々の値の場合に実行する式です。
説明
condition が true の場合、演算子は expr1 の値を返します。そうでない場合は expr2 の値を返します。例えば変数 isMember の値に基づいて別々のメッセージを表示するには、以下の構文を用いることができます:
"The fee is " + (isMember ? "$2.00" : "$10.00")
三項演算子の結果に基づいて、変数に代入することもできます:
var elvisLives = Math.PI > 4 ? "Yep" : "Nope";
多重の三項演算も可能です (注: 条件演算子は右結合です):
var firstCheck = false,
secondCheck = false,
access = firstCheck ? "Access denied" : secondCheck ? "Access denied" : "Access granted";
console.log( access ); // "Access granted" を記録
別々の処理を行うため、任意の位置で三項演算を用いることもできます:
var stop = false, age = 16;
age > 18 ? location.assign("continue.html") : stop = true;
各々の場合に複数の処理を行うこともでき、その方法はそれぞれの文をカンマで区切ることです:
var stop = false, age = 23;
age > 18 ? (
alert("OK, you can go."),
location.assign("continue.html")
) : (
stop = true,
alert("Sorry, you are much too young!")
);
値を代入する際に、複数の処理を行うこともできます。この場合、括弧内のカンマ区切りで最後の値が代入されます。
var age = 16;
var url = age > 18 ? (
alert("OK, you can go."),
// alert は "undefined" を返しますが、カッコ内のカンマ区切りで
// 最後の値ではないため無視されます
"continue.html" // age > 18 である場合に代入される値です
) : (
alert("You are much too young!"),
alert("Sorry :-("),
// etc. etc.
"stop.html" // !(age > 18) ではない場合に代入される値です
);
location.assign(url); // "stop.html"
仕様
ブラウザ実装状況
現在、互換性データを可読形式の JSON フォーマットに置き換えているところです。
この互換性一覧は古い形式を使っており、これに含まれるデータの置き換えが済んでいません。
手助けしていただける場合は、こちらから!
| 機能 | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| 基本サポート | (有) | (有) | (有) | (有) | (有) |
| 機能 | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| 基本サポート | (有) | (有) | (有) | (有) | (有) | (有) |