2011年12月09日 Category:JavaScript

JavaScriptで三項演算子を入れ子する書き方

JavaScriptには三項演算子というif文を省略した書き方があります。
正確には「JavaScriptにも」なんですが、他の言語は分かりません!

このif文が

var a = true;
 
if (a) {
     var b= 'aはtrue';
} else {
     var b= 'aはfalse';
}
 
alert(b); //aはtrue

こう省略できる。

var a = true;
var b = a ? 'aはtrue' : 'aはfalse';
 
alert(b); //aはtrue

それで、このブログにも使わせてもらっている「jQuery.easing.scroll.js」プラグインのソースを見ていたら、こんな一行があった。

t = $.support.boxModel ? navigator.appName.match(/Opera/) ? "html" : "html,body" : "body";

三項演算子なのは分かるけど、「?」と「:」が2つある。どういうことなんだ?

三項演算子は入れ子にできる

つまり、if文が入れ子にできるように、三項演算子も入れ子にできるということだった。

このif文は、

var a = true;
var b = true;
 
if (a) {
     if (b) {
          var c = 'aはtrueでbはtrue';
     } else {
          var c = 'aはtrueでbはfalse';
     }
} else {
     var c = 'aはfalse';
}
 
alert(c); //aはtrueでbはtrue

このように書ける。

var a = true;
var b = true;
var c = a ? b ? 'aはtrueでbはtrue' : 'aはtrueでbはfalse' : 'aはfalse';
 
alert(c); //aはtrueでbはtrue

こういう省略記法みたいなプログラムの書き方は、まだまだ知らないものが多そうだ。

コメント

トラックバック

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

トラックバックURL

Page Top