`??`の左辺が[[Nullish (JavaScript)|Nullish]]の場合に右の値を返し、それ以外の場合に左を返す演算子。 以下の2つは等価である。 ```ts const x = foo ?? bar(); ``` ```ts const x = foo !== null && foo !== undefined ? foo : bar(); ``` ## その他の比較例 ```ts console.log(undefined || "値がないんじゃあああ!!!") // -> 値がないんじゃあああ!!! console.log(null || "値がないんじゃあああ!!!") // -> 値がないんじゃあああ!!! console.log({} || "値がないんじゃあああ!!!") // -> {} console.log([] || "値がないんじゃあああ!!!") // -> [] console.log(0 || "値がないんじゃあああ!!!") // -> 値がないんじゃあああ!!! console.log("" || "値がないんじゃあああ!!!") // -> 値がないんじゃあああ!!! ``` ```ts console.log(undefined ?? "値がないんじゃあああ!!!") // -> 値がないんじゃあああ!!! console.log(null ?? "値がないんじゃあああ!!!") // -> 値がないんじゃあああ!!! console.log({} ?? "値がないんじゃあああ!!!") // -> {} console.log([] ?? "値がないんじゃあああ!!!") // -> [] console.log(0 ?? "値がないんじゃあああ!!!") // -> 0 console.log("" ?? "値がないんじゃあああ!!!") // -> ```