null合体演算子 ?? が実装される前には論理和演算子 || が使われていた。C言語やJavaにおける論理和演算子はブール値を返すようになっているが、昨今の高級言語では、左辺が偽なら右辺の値を返すようになっていて、これはブール値に限らない。

次のコードはGoogle Analytics 4で実際に使われている初期化コードの一部だが、window.dataLayer が存在しなければ(暗黙のwindowが使われている)、undefinedと評価されるので、右辺の新しい配列を使うことを意味している。

dataLayer = dataLayer || []

これは

dataLayer = dataLayer ?? []

とも記述できるが、上の版ではfalsyな値、つまり偽と評価できる値であれば右辺が採用されるという問題がある。配列のようなオブジェクト型であれば問題はないものの、プリミティブ型では型検査不足によって意図しない右辺値の採用が起きるので、論理和を使ったコードはなるべく避けるべきである。