条件演算子

by 2 contributors:

条件演算子は JavaScript では唯一の、3 つのオペランドをとる演算子です。この演算子は、if 文のショートカットとしてよく用いられます。

構文

condition ? expr1 : expr2 

引数

condition
truefalse かを評価する条件文です。
expr1, expr2
各々の値の場合に実行する式です。

説明

conditiontrue の場合、演算子は 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"

ドキュメントのタグと貢献者

Contributors to this page: teoli, yyss
最終更新者: teoli,
サイドバーを隠す