&&の仕様
&& はrubyもjsも短絡評価を行う
短絡評価の仕組み:式全体の結果が既に決定した時点で、それ以降の評価をしない仕組み
&&は、左側がtrue判定なら右側を返す
RubyとJSで違うのはfalsyの定義が違うのでそこで戻り値が変わる。
JavaScriptではfalse、null、undefined、0、NaN、空文字列""がfalsyと評価される
Rubyではnilとfalseのみがfalsyと評価され、他は全部trueと評価される
🤔 && とか|| は常にbooleanを返すと勘違いしてたので注意。そうなるのは左辺も右辺もbooleanを返してる時だけ
JSの &&
code:.js
console.log(true && "Hello"); // "Hello"
console.log(false && "Hello"); // false
console.log("Hi" && "Hello"); // "Hello"
console.log(0 && "Hello"); // 0
console.log("" && "Hello"); // ""
Rubyの &&
code:.rb
true && "Hello" # => "Hello"
false && "Hello" # => false
"Hi" && "Hello" # => "Hello"
0 && "Hello" # => "Hello" # 0はfalsyじゃない
"" && "Hello" # => "Hello" # 空文字はfalsyじゃない