エンターテイメント!!

遊戯王好きのJavaエンジニアのブログ。バーニングソウルを会得する特訓中。

Javascriptの構文に出てくる「??」って何?

背景

Javascriptでコードを読んでいる際に、var a = test ?? "empty"みたいなコードに出会った。
三項演算子でもないし、一体何なんだ?ってのが疑問になったので調べた。

調査結果

Null合体演算子 というものらしい。
左辺が null または undefined の場合、右辺が変えるとのこと。

実験

nullの場合

const foo = null ?? 'default string';
console.log(foo);
// expected output: "default string"

問題なし

undefinedの場合

const foo = undefined ?? 'default string';
console.log(foo);
// expected output: "default string"

問題なし

0の場合

javascriptだと、0を判定するとfalseになるので、挙動がおかしくならないか試す

const foo = 0 ?? 'default string';
console.log(foo);
// expected output: "0"

どうやら、厳密に null または undefined か判定しているようだ。

空文字の場合

ならば、今度は空文字で、意図しない挙動をしないか試す。

const foo = '' ?? 'default string';
console.log(foo);
// expected output: ""

ちぃっ、問題なし。

空配列の場合

ここで挙動がおかしくならないか、最後の確認で空配列で確認

const foo = [] ?? 'default string';
console.log(foo);
// expected output: Array []

挙動は、おかしくなりませんでした。チクショー!!
そう言えば、小梅太夫って、まだ芸人続けてるのかな?

参考サイト

JavaScriptのクエスチョンを2つ連続で各ショートハンドの正体(??) - at backyard

Null 合体 (??) - JavaScript | MDN

感想

いきなり知らない構文が出てくると焦る。。。
特に、特殊文字系は、検索で引っかからないことがあるからな。。。

とりあえず、また一つ賢くなったということで。