何回目のチャレンジか、jqueryを読んでみた

何度となくチャレンジして挫折してきたjquery読書会(一人で)。
gihyo.jpを参考に読んでみました。

http://gihyo.jp/dev/feature/01/jquery/0001

で、いきなりひっかかったんですが、39行目のこの記述。

selector = selector || document;

何これ?変数定義の時に「||」って使えるの?
というわけで自分でシコシコ試してみました。

var test = markup || wonohe;


となっている際、testに代入する際まずmarkupをチェックして、undefinedだとwonoheを入れる、と
いう処理をしているのではないかと仮定して色々実験。

var wonohe;
var markup;
var test = markup || wonohe;
alert(test); //undefined


この場合、当然wonoheもmarkupも値は定義されていないので、「undefined」となる。

var wonohe;
var markup = 'markup';
var test = markup || wonohe;
alert(test); //markup


markupに値が入っているのでtestにはmarkupが入る。

var wonohe = 'wonohe';
var markup = 'markup';
var test = markup || wonohe;
alert(test); //markup


markupにもwonoheにも値が入っているが、markupが先にあるのでmarkupが入る。

var wonohe = 'wonohe';
var markup;
var test = markup || wonohe;
alert(test); //wonohe


wonoheにのみ値が入ってる。markupは無視されてwonoheがtestに代入される!
つまり、仮定どおり!1つ目の変数をチェックして、undefinedであれば2つ目の変数をチェック。
ということはjqueryに書いてる

selector = selector || document;


これは、selectorが定義されていなければdocumentオブジェクトを入れる、と。
なので、selectorが引数として渡されてなければ勝手にdocumentオブジェクトが
入るということですな。あー前途多難だ・・・がんばろう。


今日のお疲れ!BGM♪
22才の別れ/風