条件演算子は 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 hadRelations = false, isSure = false, presidentQuote = hadRelations ? "Did not have relations" : isSure ? "Did not have relations" : "I admit"; console.log( presidentQuote ); // コンソールに "I admit" と表示
別々の処理を行うため、任意の位置で三項演算を用いることもできます:
var bStop = false, nAge = 16; nAge > 18 ? location.assign("continue.html") : bStop = true;
各々の場合に複数の処理を行うこともでき、その方法はそれぞれの文をコンマで区切ることです:
var bStop = false, nAge = 23; nAge > 18 ? ( alert("Ok, you can go."), location.assign("continue.html") ) : ( bStop = true, alert("Sorry, your are too much young!") );
値を代入する際に、複数の処理を行うこともできます。この場合、括弧内のコンマ区切りで最後の値が代入されます。
var nAge = 16; var sURL = nAge > 18 ? ( alert("Ok, you can go."), // alert は "undefined" を返しますが、括弧内のコンマ区切りで最後の値ではないため無視されます "continue.html" // nAge > 18 である場合に代入される値です ) : ( alert("You are too much young!"), alert("Sorry :-("), // etc. etc. "stop.html" // !(nAge > 18) ではない場合に代入される値です ); location.assign(sURL); // "stop.html"