# Operador Bang Bang (Valores Falsy/Truthy)
Javascript es capaz de evaluar variables como si fueran booleanos en contextos donde son requeridos.
Lo siento, esa descripción es muy técnica 😅. Comencemos con un ejemplo para entender mejor:
const nombre = 'Fer';
if (nombre) { // 'nombre' se considera 'true'
console.log('La condición se cumplió');
}
Esto es posible gracias a los valores "falsy" y "truthy", es decir, valores que en ciertos casos se pueden considerar como verdadero o falso. Para saber cuál es cuál, es más fácil memorizar aquellos que al final del día son falsos. Así, cualquier otro valor que no se encuentre en esa lista podemos asegurar que es verdadero.
Falsy | Truthy |
---|---|
0 | [] |
"" (string vacío) | {} |
false | Cualquier otro que no sea falsy |
null | |
undefined | |
NaN |
Posiblemente te estés preguntando ¿por qué el arreglo y el objeto vacío no se consideran falsos?. Esto se debe a que lo que JS evalúa en ellos es su referencia, en lugar de su contenido. Y estas referencias se generan automáticamente en la declaración, por lo que siempre serán verdaderos.
WARNING
Ten mucho cuidado al momento de condicionar usando arreglos y objetos. Para su uso correcto, evalúa explícitamente su contenido. Por ejemplo:
const arregloVacio = [];
if (arregloVacio.length) {}
const objetoVacio = {};
if (Object.keys(objectoVacio).length) {}
Pero si tú por alguna razón realmente necesitas convertir el valor de una variable a booleano, te recomiendo usar alguna de las siguientes dos opciones:
- Función
Boolean
const nombre = 'Fer';
const booleano = Boolean(name); // 'Fer' -> true
- Operador Bang Bang
const nombre = 'Fer';
const booleano = !!name; // 'Fer' -> true
TIP
El operador Bang Bang realmente es el uso del operador NOT
dos veces, ya que la primera vez obtenemos el valor booleano contrario y la segunda nos regresa al original.
const name = 'Fer';
// Primera negación
!name // 'Fer' -> false
// Segunda negación
!!name // 'Fer' -> false -> true
¿Cuál es mejor? Ninguna. Usa la que más te guste 😉.
Bueno, esto es todo por hoy. Nos vemos en la próxima.
Happy coding! 🥸