問題
jQuery写経中に、復習用に考えてみた。
以下Q1〜Q4まで、結果がどうなるかを答えよ。
var test1 = false || {greeting:function(){return "hello"}, toString:function(){return "test1"}};
alert(test1); // Q1
var test2 = test1 || {};
alert(test2); // Q2test2[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());