解説
今回は、条件の真偽によって違う値を返す「条件演算子」です。if文で行ったような、条件による分岐処理を、計算の一部として行うことができます。
まずは、その基本的な書き方を示します。
ブーリアン ? 真の時の値 : 偽の時の値
a = true ? "ok" : "no";
// 変数aには「ok」が入る
b = false ? "ok" : "no";
// 変数bには「no」が入る
これは、以下のように使います。
b = 10; a = (b > 0) ? "ok" : "no";
この式は、以下のように処理されていきます。
a = (b > 0) ? "ok" : "no"; ↓ a = (10 > 0) ? "ok" : "no"; ↓ a = true ? "ok" : "no"; ↓ a = "ok";
条件演算子は、他の演算子とは違い、「?」と「:」という2つの記号を使い、3つの値を取ります。こういった演算子を三項演算子と言います。
プログラミング言語では、こういった三項演算子は条件演算子だけなことが一般的なため、条件演算子のことを三項演算子と呼ぶ場合もあります。
以下、先ほどの処理をifで書いた場合と並べて掲載しておきます。
b = 10;
a = (b > 0) ? "ok" : "no";
if (b > 0) {
a = "ok";
} else {
a = "no";
}
サンプル
条件演算子を使った処理を、JavaScriptで簡単に書いてみます。
<html>
<head>
<title>「条件演算子」のサンプル</title>
</head>
<body>
<pre><script type="text/javascript">
var a = "";
var b = 10;
// bが10未満か判定
a = (b < 10) ? "10未満" : "10以上";
document.writeln(a);
// 「<」の方が「?:」よりも優先順位が上なので
// 「( )」がなくても先に計算される
a = b < 10 ? "10未満" : "10以上";
document.writeln(a);
// 条件式部分で複雑な計算をしてもOK
a = b - 1 < 10 ? "10未満" : "10以上";
document.writeln(a);
// 「( )」を付けた方が分かりやすいので付ける
a = ((b - 1) < 10) ? "10未満" : "10以上";
document.writeln(a);
// 真や偽の値が入る場所に式を書いて、
// 真式、偽式としても大丈夫
a = ((b - 1) < 10) ? "10" + "未満" : "10" + "以上";
document.writeln(a);
// 「( )」を付けた方が分かりやすいので付ける
a = ((b - 1) < 10) ? ("10" + "未満") : ("10" + "以上");
document.writeln(a);
</script></pre>
</body>
</html>
10以上 10以上 10未満 10未満 10未満 10未満
