JavaScriptのNull合体演算子(??)は、左辺の値がどのような場合に右辺の値を返しますか?
1〜4キーで選択、Enterで回答できます
解説
正解は「左辺が null または undefined のときだけ右辺を返す」です。?? は、値が「存在しない」ことを表す null と undefined だけを判定の対象にし、それ以外の値はたとえ 0 や空文字列でも左辺をそのまま返します。|| との違いは 0 や空文字列の扱い論理和演算子 || は、左辺が falsy(条件式で false とみなされる値。0、""、false、NaN、null、undefined)なら右辺を返します。そのため「左辺が falsy な値(0 や空文字列を含む)」は || の説明であり、?? には当てはまりません。const count = 0; console.log(count || 10); // 10(0 は falsy なので右辺) console.log(count ?? 10); // 0(0 は null でも undefined でもない) console.log(undefined ?? "default"); // "default"「0 件」や「空の入力」を有効な値として扱いたい場面では ?? が適しています。他の誤答について「左辺が null のときだけ右辺を返し」は誤りです。undefined も同じく右辺が返されます。「左辺が null または undefined のとき、エラーを投げずに」はオプショナルチェーン ?.(途中が null/undefined でもエラーにせず undefined を返す構文)の説明です。両者は user?.name ?? "名無し" のように組み合わせてよく使われます。なお、?? は左辺が null/undefined でなければ右辺を評価しません(短絡評価)。右辺に関数呼び出しを書いても、その場合は実行されません。|| や && と括弧なしで混ぜると SyntaxError になるa || b ?? c のように、?? を || や && と括弧なしで並べると構文エラーになります。優先順位の誤解を防ぐための仕様です。既存コードの || を部分的に ?? へ置き換えるときに起きやすいので、(a || b) ?? c のように括弧で意図を明示しましょう。参考Null 合体演算子 (??) - JavaScript | MDN