問題

jQuery写経中に、復習用に考えてみた。

以下Q1〜Q4まで、結果がどうなるかを答えよ。

var test1 = false || {greeting:function(){return "hello"}, toString:function(){return "test1"}};
alert(test1); // Q1
var test2 = test1 || {};
alert(test2); // Q2

test2[0] = "hogehoge";
alert(test2.greeting()); // Q3
alert(test1[0]); // Q4

即解出来る方は、JavaScript中級者以上!?

論理加算で真になる方が演算結果になるなんて知らんかった。
つまり、この続きで、以下のように書ける。

// 同じ意味。
var test3 = test3 ? test3 : test2;
var test3 = test3 || test2;

【追記】
代入演算子使った式自体も、演算結果になってる。
いろいろあるのね・・・。

test4 = null;
alert( (test4 = test3).greeting());