【JavaScript 】【Ruby】 && と ||の便利な合わせ技
■topic summary
what's come out? => console.log(a && b || "none")
この記事を読んで、jQueryのコードを追っているよ。
第2回 jQueryライブラリ(172行目~469行目):jquery.jsを読み解く|gihyo.jp … 技術評論社
頻繁に出てくるのが、こういう構文。
return this.setArray( // HANDLE: $(array) selector.constructor == Array && selector || // HANDLE: $(arraylike) // Watch for when an array-like object, contains DOM nodes, is passed in as the selector (selector.jquery || selector.length && selector != window && !selector.nodeType && selector[0] != undefined && selector[0].nodeType) && jQuery.makeArray( selector ) || // HANDLE: $(*) [ selector ] );
Rubyでも||を使うことによって、
nilの場合の値を指定する構文があるのはよく見るけど、
&&ってなんだ?
確かめてみよう。
var a = "aaa"; var b = "bbb"; var c; console.log(a && b || "none"); console.log(c && b || "none");
■実行結果
"bbb" "none"
なるほど。
これはRubyでもできるのかな?
a = "aaa" b = "bbb" c = nil p (a || b) p (c || a) p (c || a && b)
■実行結果
"aaa" "aaa" "bbb"
なるほどー。