Mozilla wants to hear from developers like you. http://www.surveygizmo.com/s3/2737536/440b74c45e94?a=mdn

条件 (三項) 演算子

条件 (三項) 演算子は 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 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"

仕様

仕様書 策定状況 コメント
ECMAScript 2017 Draft (ECMA-262)
Conditional Operator の定義
ドラフト  
ECMAScript 2015 (6th Edition, ECMA-262)
Conditional Operator の定義
標準  
ECMAScript 5.1 (ECMA-262)
The conditional operator の定義
標準  
ECMAScript 1st Edition (ECMA-262)
The conditional operator の定義
標準 最初の定義。JavaScript 1.0 で実装。

ブラウザ実装状況

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari
基本サポート (有) (有) (有) (有) (有)
機能 Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本サポート (有) (有) (有) (有) (有) (有)

関連情報

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

 このページの貢献者: yyss, teoli
 最終更新者: yyss,