条件(三項)演算子
条件(三項)演算子は、JavaScriptで唯一3つのオペランドを使用する演算子です。 この演算子は、よくif文の略記として使用されます。
文法
condition ? expr1 : expr2
オペランド | 説明 |
---|---|
condition | trueまたはfalseを評価する式を指定します。 |
expr1, expr2 | 任意の型の値の式を指定します。 |
説明
condition
がtrue
であれば、この演算子はexpr1
の値を返し、
false
であればexpr2
の値を返します。
例えば、isMember
変数の値を基に異なるメッセージを表示する場合、
次のような文にすることが出来ます。
"この手数料は、" + (isMember ? "$2.00" : "$10.00") + "です。"
また、この演算子を使用して変数の値を割り当てることも可能です。
var elvisLives = Math.PI > 4 ? "Yes" : "No";
三項演算子を複数組み合わせて評価することも可能です。(注意: 条件演算子は右結合です。)
var hadRelations = false,
isSure = false,
presidentQuote = hadRelations ? "Had 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;
// trueなら、location.assign("continue.html")の処理を、
// falseなら、bStop = trueの処理を行う。
カンマで区切ることで、ケース別に1つの演算子で1つ以上の処理を実行することも可能です。
var bStop = false, nAge = 23;
nAge > 18 ? (
alert("どうぞ、お入り下さい。"),
location.assign("continue.html")
) : (
bStop = true,
alert("申し訳ありませんが、あなたは若すぎます。")
);
値の割り当て時に、1つ以上の操作を行うことも可能です。 このケースでは、括弧内で最後にカンマ区切りされている値が、割り当てられる値になります。
var nAge = 16;
var sURL = nAge > 18 ? (
alert("どうぞ、お入りください。"),
// alertは"undefined"を返しますが、それは無視されます。
// 何故なら、括弧内の最後のカンマ区切りの値では無いからです。
"continue.html" // もし、nAge > 18であれば、この値が割り当てられます。
) : (
alert("あなたは若すぎます。"),
alert("すみません。m(_ _)m "),
// …その他の処理…
"stop.html" // もし、!(nAge > 18)であれば、この値が割り当てられます。
);
location.assign(sURL); // "stop.html"
仕様
ブラウザ互換性
機能 | Chrome | Firefox (Gecko) |
IE | Opera | Safari |
---|---|---|---|---|---|
基本 | ◯ | ◯ | ◯ | ◯ | ◯ |
機能 | Android | Chrome for Android |
Firefox Mobile |
IE Mobile |
Opera Mobile |
Safari Mobile |
---|---|---|---|---|---|---|
基本 | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ |
関連項目
© 2017 Mozilla Contributors
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
このページは、ページトップのURL先のMozilla Developer Network(以下、MDN)のコンテンツを翻訳した内容を基に構成されています。 構成について異なる点も含まれますので、下記の項目を確認し、必要に応じて元のコンテンツをご確認ください。 もし、誤訳などの間違いを見つけましたら、 @tomofまで教えていただければ幸いです。
- 特定のブラウザに特化しすぎている情報やあまりにも古い情報、 または試験的に導入されているようなAPIや機能については、省略していることがあります。
- 例やデモについて、実際にページ内で動作させる関係で一部ソースコードを変更している場合や、 その例で使用しているコンテンツの単語や文章などを日本人向けに変更しいてる場合があります。
- MDNの更新頻度が高いため、元のコンテンツと比べ情報が古くなっている可能性があります。
- "訳注:"などの断わりを入れた上で、日本人向けの情報の追記を行っている事があります。