背景
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
感想
いきなり知らない構文が出てくると焦る。。。
特に、特殊文字系は、検索で引っかからないことがあるからな。。。
とりあえず、また一つ賢くなったということで。