SFOOL

ただの ぶろぐの ようだ

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

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

  • Twitter
  • はてなブックマーク

コメント

コメントはお気軽にどうぞ

メールアドレスは公開されませんのでご安心ください。