Is there a JavaScript idiom to change "undefined" to "null"?
undefined || null
- or any falsey || null - will return null
Javascript now supports a null-coalescing operator: ??
. It may not be production-ready (consult the support table), but it's certainly safe to use with Node or a transpiler (TypeScript, Babel, etc.).
Per MDN,
The nullish coalescing operator (??) is a logical operator that returns its right-hand side operand when its left-hand side operand is null or undefined, and otherwise returns its left-hand side operand.
Much as ||
can provide a "default" value when the left operand is falsey, ??
provides a "default" value if the left operand is null or undefined. You can use this to coerce undefined to null:
// OR operator can coerce 'defined' values "value" || null; // "value" 0 || null; // null false || null; // null "" || null; // null undefined || null; // null // The null-coalescing operator will only coerce undefined or null "value" ?? null; // "value" 0 ?? null; // 0 false ?? null; // false "" ?? null; // "" undefined ?? null; // null
An example based on the question:
function mustNotReturnUndefined(mightBeUndefined) { // can return null // Substitute empty string for null or undefined let result = processValue(mightBeUndefined ?? ""); // Substitute null for undefined return result ?? null; }
This is a fairly old question and probably my answer is a little late, but I decided for myself in the following way:
const valueOrNull = (value = null) => value;const a = { d: '' };valueOrNull(a.b?.c) === null; // truevalueOrNull(a.d) === ''; // truevalueOrNull() === null; // true
Any undefined
value will get null
as the default value;