¿Qué hace ??= en JavaScript?
keys.reduce((o, k) => o[k] ??= {}, obj)[last] = value??= es similar al operador coalescente nulo introducido como asignación nula lógica implementada como otros lenguajes: ejemplo de php . La asignación lógica nula se introduce en ES12 (ECMAScript 2022).
El operador de asignación lógica nula (x ??= y) solo asigna si x es nula (nula o indefinida).
Ejemplo:
let foo = null; let bar = "Give me a beer!"; foo ??= bar; foo ?? (foo = bar) es el equivalente de la expresión anterior. A la variable foo se le asigna la bar de variables solo si foo es null o undefined . En este ejemplo, foo se convierte en "¡Dame una cerveza!". Si reemplazamos let foo = null con `let foo = "¡No necesito una cerveza!", la asignación no sucede. La variable foo permanece "¡No necesito una cerveza!".
El código equivalente con una if statement es el siguiente:
let foo = null; let bar = "Give me a beer!"; if (foo == null || foo == undefined) { foo = bar; } No comprueba otros valores falsos. Solo comprueba si null e undefined .
Entonces, en su ejemplo de código o[k] asigna un objeto vacío {} cuando el valor de o[k] resulta null o undefined .