Cómo evitar valores nulos en JavaScript
Sé que el título de este post puede ser un poco engañoso, pero quiero hoy escribir acerca de tres opciones que nos ayudan a asignar un valor a una variable dependiendo de si tenemos o no un null
.
La manera fácil
La forma más sencilla y directa es simplemente hacer un bloque condicional en el que evaluamos si la variable de control es nula o no:
if(foo === null) {
res = "valor";
}
Operador OR (||)
Otra manera de asignar un valor si nuestra variable de control es nula es usando el operador OR (||):
res = foo || "valor";
Esta es una manera rápida y fácil de entender, en la que le decimos a la máquina que le asigne un valor (string "valor" en el ejemplo) a res
si foo
es una variable nula. Sin embargo esta manera de hacerlo puede tener algunos resultados inesperados. Al ser ||
un operador booleano la expresión del lado izquierdo se evalúa como tal, considerando valores como 0
, ""
, NaN
, y false
como ciertos (como nulos) siendo que no siempre se consideran así. Pongo los siguientes ejemplos para que se entienda mejor:
const count = 0;
const text = "";
const qty = count || 42;
const message = text || "valor";
console.log(qty); // 42, no 0
console.log(message); // "valor", no ""
Nullish Coalescing Operator (??)
Si queremos evitar que valores definidos (no null y no undefined) se consideren como nulos, entonces debemos utilizar el Nullish coalescing operator (??). Dicho operador se utiliza de la misma manera que el operador OR (||) con a diferencia de que simplemente evalua la variable de control en contra de valores no definidos. Usando los mismos ejemplos que antes, los resultados ahora serían los siguientes:
const count = 0;
const text = "";
const qty = count ?? 42;
const message = text ?? "valor";
console.log(qty); // 0
console.log(message); // ""
Esas son las maneras que puedo compartir sobre cómo asignar un valor cuando nuestra variable de control es indefinida/nula. Dependiendo de nuestro caso de uso, podemos optar por una o la otra, pero siempre es bueno conocer las opciones que tenemos para poder tomar la mejor decisión.
Comentarios
Publicar un comentario