Is there a JavaScript idiom to change "undefined" to "null"? Is there a JavaScript idiom to change "undefined" to "null"? javascript javascript

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;