概要
条件演算子は JavaScript では唯一の、3 つのオペランドをとる演算子です。この演算子は、if 文のショートカットとしてよく用いられます。
| Operator | |
| Implemented in: | JavaScript 1.0 |
| ECMA Version: | ECMA-262 |
構文
condition ? expr1 : expr2
引数
-
condition -
trueかfalseかを評価する条件文です。
-
expr1,expr2 - 各々の値の場合に実行する式です。
説明
condition が true の場合、演算子は expr1 の値を選択します。そうでない場合は expr2 の値を選択します。例えば変数 isMember の値に基づいて別々のメッセージを表示するには、以下の構文を用いることができます:
document.write ("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"
Mozilla Developer Network