Coalescencia nula – JavaScript

Hace unos días, escribí una publicación que describía el “operador de encadenamiento opcional” en JavaScript. La propuesta de fusión nula va junto con la mencionada anteriormente.

1. ¿Quiénes son los autores de la propuesta?

“Nullish Coalescing” es una propuesta en la Etapa 3, y fue creada por Gabriel Isenberg, Daniel Ehrenberg y Daniel Rosenwasser.

2. ¿Cuál es la sintaxis?

La sintaxis es sencilla y debe escribir: “??” para lograr el resultado deseado.

3. ¿Para qué puedes usarlo?

Vamos a crear un objeto simple:

const patient = {
   firstname: "Vanessa",
   lastname: "White",
   nextOfKin: "",
   sugarLevel: 0,
   age: 31,
   address: {
      street: "New street 56",
      postcode: "M912TU"
   },
   nullValue: null
};

He creado un objeto de paciente simple, donde tenemos los detalles y la dirección necesarios. Ahora, intentemos evaluar los valores de los objetos usando “||” operador.

patient.firstname || "No name" // "Vanessa"

El código que se muestra arriba demuestra el uso común de “||” operador. Eche un vistazo al siguiente ejemplo a continuación:

patient.dateOfBirth || "No date of birth" // "No date of birth"
patient.nullValue || "Null value is there" // "Null value is there"

El ejemplo anterior muestra casos comunes en los que puede usar “||” para determinar cuándo la propiedad es indefinida o nula. Ponga atención a los detalles; hay valores falsos que producen resultados inesperados.

patient.nextOfKin || "No next of kin" // "" is falsy, produces: "No next of kin"
patient.sugarLevel || "No sugar level" // 0 is falsy, produces: "No sugar level"

Como puede ver arriba, es confuso, y no debería ser así. Si el código anterior se comportara correctamente, deberíamos recibir el resultado real en lugar de un texto alternativo.

El operador coalescente nulo está diseñado para manejar mejor estos casos y sirve como una verificación de igualdad contra valores nulos (nulos o indefinidos).

Ahí es donde “??” el operador entra en juego.

La expresión en el lado izquierdo del “??” El operador se evalúa como indefinido o nulo y se devuelve su lado derecho. Ese es el comportamiento correcto. Echa un vistazo al ejemplo.

patient.dateOfBirth ?? "No date of birth" // property is undefined, it produces: "No date of birth."
patient.nullValue ?? "Null value is there" // property is null, it produces: "Null value is there."

patient.nextOfKin ?? "No next of kin" // "" is falsy, produces: false
patient.sugarLevel ?? "No sugar level" // 0 is falsy, produces: 0

Eche un vistazo a las dos últimas líneas de código y compárelas con las siguientes donde usamos “||” operador:

patient.nextOfKin || "No next of kin" // "" is falsy, produces: "No next of kin"
patient.sugarLevel || "No sugar level" // 0 is falsy, produces: "No sugar level"

¿Puedes ver la diferencia? Va a reconocer valores falsos estrictamente.

4. ¿Qué es el soporte?

Ninguno, por desgracia. Está cerca de estar en la etapa 4. Puede encontrar soporte para esta función en Babel.

Recursos:

  1. Especificaciones coalescentes nulas

Este artículo fue escrito inicialmente en: Robert Wozniak – Blog del desarrollador

Similar Posts

Leave a Reply

Your email address will not be published.