論理演算子について(&&, ||, ??)

if文など、条件式で使われる論理演算子のAND演算子(&&)、OR演算子(||)、
Nullish coalescing演算子(??)について書きます〜

RubyJavaScriptを例として使います〜


はじめに

前提知識として,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演算子と似ているが、false0は判定されないので以下のように違うことがわかる

const value = 0
console.log(value || 111)

// => 111
const value = 0
console.log(value ?? 111)

// => 0