JavaScriptで三項演算子を入れ子する書き方
2011年12月09日- 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
こういう省略記法みたいなプログラムの書き方は、まだまだ知らないものが多そうだ。
コメント