??
??
は左辺がnull
かundefined
である場合に右の値を返し、それ以外の場合は左の値を返します。
const foo = null ?? 'default'
console.log(foo) // 'default'
const baz = 0 ?? 1
console.log(baz) // 0
||
||
は左辺の値がnull
やundefined
の場合に加えて、何らかの偽値であった場合に右の値を返します。
const foo = null || 'default'
console.log(foo) // 'default'
const baz = 0 || 1
console.log(baz) // 1
偽値には以下のようなものがあります。
値 | 型 | 説明 |
---|---|---|
null | null | 値が存在しないことを示します。 |
undefined | undefined | プリミティブ値。 |
false |
論理値型 | false。 |
NaN | 数値型 | 数値ではない。 |
0 |
数値型 | ゼロ (従って、 0.0 や 0x0 なども含みます)。 |
-0 |
数値型 | マイナスゼロ(従って、 -0.0 や -0x0 等も含みます)。 |
0n |
長整数型 | 長整数型のゼロ(従って、 0x0n も含みます)。なお、長整数型にはマイナスゼロはありません。 0n の負の数は 0n です。 |
"" |
文字列型 | 空文字列。'' や `` も含みます。 |
document.all |
オブジェクト | JavaScript で唯一の偽値のオブジェクトは、組み込みの document.all です。 |