JavaScript入門 練習問題 20:演算子:論理ORとNullish coalescing演算子の違い
次のコードの実行結果として正しいものはどれですか?
```javascript
const count = 0;
const result1 = count || 10;
const result2 = count ?? 10;
console.log(result1, result2);
```
- 10 0
- 0 10
- 0 0
- 10 10
- NaN NaN
正解と解説を見る
正解:10 0
論理OR演算子(||)は左辺が「falsyな値」(=falseとみなされる値。0や空文字列、null、undefinedなど)のときに右辺を返しますが、Nullish coalescing演算子(??、=左辺がnullまたはundefinedのときのみ右辺を返す演算子)は0のような値を「値がある」とみなして左辺をそのまま返します。
【正解の理由】countは0であり、0はfalsyな値なので||演算子は右辺の10を返しresult1は10になります。一方、0はnullでもundefinedでもないため??演算子は左辺の0をそのまま返しresult2は0になります。
【不正解の理由】
• 「0 10」:||と??の挙動が逆になっており、実際の演算子の動作と一致しない
• 「0 0」:||演算子が0をfalsyと判定して右辺を返すことが反映されていない
• 「10 10」:??演算子が0を「値がある」として扱い左辺をそのまま返すことが反映されていない
• 「NaN NaN」:||や??は数値の加算や不正な演算を行うものではなく、NaNになる要素がコード中に存在しない