🌊

「JS・TS」今更だけどNull合体演算子を見よう

2024/02/29に公開

Null合体演算子 とは

MDN
Null 合体演算子 「??」は左辺が null または undefined の場合に右の値を返し、それ以外の場合に左の値を返します。

以上、解散!

ではあるけれど

JSまたはTSの「Null合体演算子」の話ですけれど、
まーもう少し詳しく以下の記事に書かれてあるので、そちらを見たほうが良いとは思いますが
https://zenn.dev/yuji6523/articles/js-nullish-coalescing-operator

使い方は、

let some = nullable ?? default;

みたいな感じ。

「??」の左の値(ここでは変数nullableの中身)がnullundefinedなら右の「default」になり、それ以外なら左の「nullable」になります。
もう一度言います。
「??」の左の値がnullundefinedなら右の値になり、それ以外なら左の値になります。

どこにそんなに引っかかるか、という話なのですが、
「?」、つまり三項演算子との違いですね。
ご存じ三項演算子は以下のように使います。

let some = tof ? var1 : var2;

この「tof」部分(変数なり関数なり条件)が判定時「true」なら左「var1」、「false」なら右「var2」になります。

問題はここでいう「判定時」奴で、JSの闇であると同時に便利なところでもあるこいつは、「null」「undefined」はもちろん空文字("")や「0」も「false」判定になります。

見た目似てる「?」と「??」で判定方法が異なります。
こいつらは見た目が似てるだけでディグダとウミディグダみたいな別種なのです。

じゃ、「?」みたいな判定で「??」みたいな動きをする演算子は?
「||」ですね。

この辺、しっかり把握してないと数時間悩むことになっても知らんぜよ(1敗)。

おわり

皆さんご存じのこととは思いますが、しっかり基礎から勉強したことない私は、不親切なAPIとの連携攻撃で見事にナックアウトされたので、もし知らなかったよ!!という方はいいねしてってね。

さいなら

Discussion