せかいや

いまいるここを、おもしろく http://sekai-in-the-box.appspot.com/

【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"

なるほどー。