条件 (三項) 演算子は JavaScript では唯一の、3 つのオペランドをとる演算子です。この演算子は、if
文のショートカットとしてよく用いられます。
構文
condition ? expr1 : expr2
引数
condition
true
か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"
仕様
ブラウザ実装状況
機能 | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
基本サポート | (有) | (有) | (有) | (有) | (有) |
機能 | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
基本サポート | (有) | (有) | (有) | (有) | (有) | (有) |