論理演算子について(&&, ||, ??)
if文など、条件式で使われる論理演算子のAND演算子(&&)、OR演算子(||)、
Nullish coalescing演算子(??)について書きます〜
RubyとJavaScriptを例として使います〜
はじめに
前提知識として,Ruby,JSでfalsyな値(falseになる値)を整理
false nil
false undefined null 0 0n NaN ""(空文字列)
これら以外はtruthyになる(falseになる値を覚えた方が効率が良い)
AND演算子
AND演算子(&&)は、左辺の値の評価結果がtrueならば、右辺の評価結果を返します
一方で、左辺の値の評価結果がfalseならば、そのまま左辺の値を返します
puts false && true # => false puts true && false # => false
console.log(false && true) // => false console.log(true && false) // => false
OR演算子
OR演算子(||)は、左辺の値の評価結果がtrueならば、そのまま左辺の値を返します
一方で、左辺の値の評価結果がfalseであるならば、右辺の評価結果を返します
puts false || true # => true puts true || false # => true
console.log(false || true) // => true console.log(true || false) // => true
Nullish coalescing演算子(JavaScript)
Nullish coalescing演算子(??)は、左辺の値がnulishであるならば、右辺の評価結果を返します
nulishとは、評価結果がnullまたはundefinedとなる値のことです
console.log(false ?? true) // => false console.log(true ?? false) // => true console.log(null ?? true) // => true console.log(true ?? null) // => true
OR演算子と似ているが、false
や0
は判定されないので以下のように違うことがわかる
const value = 0 console.log(value || 111) // => 111
const value = 0 console.log(value ?? 111) // => 0