Los operadores lógicos &&|| y ?? ahora también pueden usarse para asignar valores de una forma más corta y sencilla. Es perfecta para asignar valores por defecto a las variables.

// Si h es false, se le asigna c
h ||= c
// Equivale a...
h || (h = c)

// Si h es true, se le asigna c
h &&= c
// Equivale a...
h && (h = c)

// Si h es null o undefined, se le asigna c
h ??= c
// Equivale a...
h ?? (h = c)

Hay que tener en cuenta que en estas asignaciones, además, entra el juego la evaluación short-circuit. Esto quiere decir que estas asignaciones lógicas se evaluan de izquierda a derecha. Si una expresión lógica no se cumple, no se evalúa la siguiente.

Esto es importante para no cometer errores:

// Este nuevo tipo de asignación con &&
h &&= c
// Es equivalente a...
h && (h = c)
// Y no es equivalente a...
h = h && c
// Ya que la asignación ocurre siempre independientemente de la evaluación

¿Te gustó? Por favor comparte para que más Devs puedan aprender.