0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

論理和とNull合体演算子の違い

Last updated at Posted at 2021-10-09

はじめに

JavaScriptでコード書いているとき、 nullundefinde と上手く付き合うために以下のような記法をよく使うと思います。

&& ... 論理積
|| ... 論理和
hoge?.huga ... オプショナルチェーン
?? ... Null合体演算子

このうち 論理和Null合体演算子 の違いを理解せずに使用されているケースをたまに見るため、その違いについて改めて記事として書こうと思いました。そのため、非常に短い記事になります。

論理和とNull合体演算子の違い

一言で言うと
論理和は左の値がfalsyの時、次の右の処理がよばれる
Null合体演算子は左の値が null または undefinde の時、次の右の処理がよばれる
です。
falsyな値とは以下です。(公式から引用)

false falseキーワード
0 数値ゼロ
-0 数値マイナスゼロ
0n BigInt で、論理値として使用された場合、 Number と同じ規則に従う
"" 空文字列の値
null 何も値が存在しないこと
undefinde プリミティブ値
NaN 非数

つまり 論理和 を使用すると
上記テーブルの値以外であれば短絡させます。

let toyA; //undefinde
const toyB = toyA || "doll"
// toyB ... "doll"

const count = 0 || 1
// count ... 1

const noNameMan = ""
const friendName = noNameMan || "Sakuragi"
// friendName ... "Sakuragi"

これに対し Null合体演算子nullundefind のみ短絡させます。

let toyA; //undefinde
const toyB = toyA ?? "doll"
// toyB ... "doll"

const count = 0 ?? 1
// count ... 0

const noNameMan = ""
const friendName = noNameMan ?? "Sakuragi"
// friendName ... ""

この違いを理解して使用しないと思わぬバグを招いてしまうため注意です。

終わりに

最後まで読んでいただきありがとうございました。
Null 合体(??)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?