preloader

Operador de Fusión de Nulos ‘??’

Una incorporación relativamente nueva en JavaScript es el operador de fusión de nulos, representado por dos signos de interrogación juntos: ??.

Este operador se introdujo para manejar de manera más específica los valores nulos y undefined, proporcionando una forma concisa de asignar valores predeterminados cuando una expresión es nula o no está definida.

Funcionamiento del Operador ??

El operador ?? devuelve el primer valor que no sea nulo ni indefinido de entre dos operandos. Si el primer operando no es nulo ni indefinido, se devuelve ese valor. De lo contrario, se devuelve el segundo operando.

En términos prácticos, esto significa que podemos establecer fácilmente un valor predeterminado cuando no estamos seguros de si una variable tiene un valor válido o no:

				
					let usuario;

alert(usuario ?? "Anónimo"); // Anónimo (usuario es undefined)

				
			

En este ejemplo, si usuario no está definido, se mostrará «Anónimo». Si usuario tiene algún valor asignado, se mostrará ese valor.

También es posible encadenar múltiples operadores ?? para seleccionar el primer valor que no sea nulo o indefinido de una lista de variables:

				
					let primerNombre = null;
let apellido = null;
let apodo = "SuperProgramador";

alert(primerNombre ?? apellido ?? apodo ?? "Anónimo"); // SuperProgramador

				
			

Aquí, el operador ?? selecciona el primer valor que no sea nulo o indefinido, mostrando «SuperProgramador» porque es el primer valor definido de la lista.

Comparación con el Operador ||

Aunque el operador || se puede utilizar de manera similar para asignar valores predeterminados, hay una diferencia crucial en cómo manejan los valores considerados «falsos».

El operador || considera false, 0, una cadena vacía «», null y undefined como valores «falsos». Si cualquiera de estos valores es el primer operando, el segundo operando se devuelve como resultado:

				
					let altura = 0;

alert(altura || 100); // 100
alert(altura ?? 100); // 0

				
			

En este ejemplo, altura || 100 devuelve 100 porque altura (0) se considera «falso». En cambio, altura ?? 100 devuelve 0 porque altura no es null ni undefined.

Precedencia y Uso

El operador ?? tiene la misma precedencia que el operador || en JavaScript, lo que significa que se evalúa antes que la mayoría de las operaciones aritméticas y de asignación, pero después de otros operadores como + y *.

Es importante utilizar paréntesis para asegurar que las expresiones se evalúen correctamente cuando se combinan con otros operadores:

				
					let altura = null;
let anchura = null;

// Es crucial usar paréntesis aquí
let área = (altura ?? 100) * (anchura ?? 50);

alert(área); // 5000

				
			

Si omitimos los paréntesis en la expresión anterior, JavaScript interpretaría incorrectamente el orden de las operaciones debido a la precedencia de los operadores.

Limitaciones y Consideraciones

JavaScript prohíbe el uso de ?? junto con los operadores && y || sin el uso explícito de paréntesis para evitar ambigüedades y errores sintácticos:

				
					let x = 1 && 2 ?? 3; // Error de sintaxis

				
			
Para corregir esto, siempre debemos utilizar paréntesis para definir explícitamente el orden de evaluación:
				
					let x = (1 && 2) ?? 3; // Funciona correctamente

alert(x); // 2

				
			

Conclusión

El operador de fusión de nulos ?? proporciona una manera clara y concisa de asignar valores predeterminados en JavaScript, especialmente útil cuando se trabaja con valores potencialmente nulos o indefinidos. Su introducción en el lenguaje ha mejorado la legibilidad y la precisión en la asignación de valores por defecto en expresiones condicionales.

Related Post

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *