not definedな変数はNull合体演算子で使ってもエラーが出る

2024/01/22に公開

覚えたてのNull合体演算子(??)を使おうと下記のような内容のコードを書いたところ、エラーが出ました。

let b = 'b';
let c = a ?? b; // => Uncaught ReferenceError: a is not defined

変数aがundefinedなら変数bが代入されるはずなのでは…?としばらく悩みましたが、undefinednot definedは別の状態(正確には、undefinedはすでに宣言されている変数の型で、not definedは宣言されてないですよというエラー)というだけでした(恥ずかしい)

上の例でいえば、本来はこのように書く必要があります。

let a;
let b = 'b';
let c = a ?? b; // => b

Discussion