This article is currently in the process of being translated into Spanish (~99% done).
Truthy & Falsy
En la mayoría de los lenguajes de programación, así como en las matemáticas, el concepto de verdadero y falso es completamente binario: algo es cierto, de lo contrario es falso. Pero en JavaScript, el concepto de verdadero y falso se expande un poco, porque el lenguaje generalmente es poco rígido y no es tan estricto como otros lenguajes de programación.
En la práctica esto significa que a veces JavaScript evaluará algo como verdadero o falso, a pesar de que no es completamente cierto o falso. El propósito es simplemente hacer las cosas más fáciles y menos complicadas para ti, pero si no sabes de esto, o si lo olvidas por un momento, las cosas pueden volverse un poco confusas.
Así que, permíteme presentarte un nuevo concepto: Truthy y Falsy. Existen solo como conceptos - no encontrarás palabras clave para ellos en JavaScript, ni podrás comprobar contra un valor truthy o falsy. En lugar de eso, JavaScript ha introducido un segundo conjunto de operadores para comprobar si algo es completamente verdadero o completamente falso. Estos se conocen como operadores estrictos, p. ej., el operador de igualdad estricta, donde usamos tres signos iguales en lugar de dos, cuando comparamos dos valores.
Hablaremos mucho más sobre los diversos operadores de JavaScript, incluyendo los estrictos, en un próximo capítulo, pero por ahora, hablemos más sobre lo que puede considerarse Verdadero o Falso.
Verdadero
En JavaScript, todos los valores son Verdaderos a menos que sean específicamente Falsos. JavaScript utilizará la coerción de tipo para convertir algo a un valor booleano cuando se use en un contexto que lo requiera, como un bucle o una sentencia if. Por ejemplo, considere los siguientes ejemplos de valores que serán tratados como verdaderos porque son Verdaderos:
if(true)
alert("truthy");
if(42)
alert("truthy");
if("hello world")
alert("truthy");
Si ejecutas este ejemplo, verás que las tres sentencias if valúan como verdadero, pero ¿por qué es verdadero "hello world"? Porque contiene un valor real y por lo tanto, JavaScript considerará esto como verdadero cuando se use en un contexto donde se requiera evaluar Verdadero o Falso.
Falso
En general, todos los valores que son nulos, indefinidos o vacíos serán considerados como Falso y por lo tanto tratados como false, cuando se usan en un contexto booleano como bucles y declaraciones if. Aquí hay un par de ejemplos:
if(false)
alert("falsy");
if(null)
alert("falsy");
if(0)
alert("falsy");
if("")
alert("falsy");
Si ejecutas el ejemplo anterior, notarás que ninguna de las alertas se activan - porque todas las sentencias if se consideran falsas en este contexto.
Resumen
Cuando JavaScript necesita que algo sea verdadero o falso, por ejemplo al evaluar la condición de un bucle o una sentencia if, recurrirá a la coerción de tipo, si es necesario, para convertir valores que no son booleanos en verdaderos o falsos. El resultado de esto se conoce como Truthy y Falsy, porque aunque no son realmente verdaderas o falsas, están lo suficientemente cerca para que JavaScript pueda tomar una decisión basada en ellas, como ilustran los ejemplos de este artículo.