Nullish Coalescing
Default values with ?? — safer than ||
// || treats all falsy values as missing — buggy for 0
const count = 0;
console.log(count || 10); // 10 (wrong — 0 is a valid count)
console.log(count ?? 10); // 0 (correct)
// Same for empty string
const name = "";
console.log(name || "Guest"); // "Guest"
console.log(name ?? "Guest"); // ""
// Real use case: config merging
function greet(options = {}) {
const retries = options.retries ?? 3; // keeps 0
const prefix = options.prefix ?? "[app]"; // keeps ""
return `${prefix} retries=${retries}`;
}
console.log(greet({ retries: 0, prefix: "" }));
// Nullish assignment
const config = { debug: false };
config.debug ??= true; // stays false
config.timeout ??= 5000; // becomes 5000
console.log(config);