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