¿Sabes qué retorna esta expresión en Javascript?

Software ago. 27, 2020

Te tengo un desafío ¡Pero sin hacer trampa! Controla tus impulsos de buscar en Google o de leer más abajo ¿En Javascript, qué retorna esta expresión: "" && "Hola"?

Tú en este momento

¿Tienes una respuesta? Si estás leyendo esto antes de tener una respuesta voy a estar muy decepcionado. Ok, confío en que ya lo pensaste. La respuesta correcta es que esa expresión retorna "" ¿Sorprendido? ¡Yo me sorprendí cuando lo supe! Estaba seguro de que la respuesta sería false. Mi confusión nace por no entender bien la definición de la expresión a && b:

Lo que yo pensaba:
a && b => b si a es truthy, false en otro caso

La definición real
a && b => b si a es truthy, a en otro caso

Las definiciones clave acá son truthy y falsy. Dos términos con nombres aparentemente inofensivos. En una condición booleana, una expresión es truthy si es considerada true y falsy si es considerada false. Esto no quiere decir eso si que la expresión sea true o false ¡Parece obvio ahora! Al yo del pasado no le parece tan obvio y no está muy feliz de que nos riamos de su ignorancia.

La expresión "" es falsy, pero no es false, y por eso la expresión "" && "Hola" es "", y no false. ¿La moraleja? Estas expresiones se evalúan distinto cuando están en una condición booleana. Si quieres realmente evaluar una variable en su valor booleano puedes ocupar el operador !!, la doble negación convierte un valor truthy a true, y un valor falsy a false.

La expresión que necesitaba era  !!"" && "Hola" que efectivamente se evalúa false.

Esta técnica es muy utilizada en React Native. Si lo has ocupado sabrás que no se puede colocar un string en cualquier parte, pues causa un error. Justamente el error que tuve yo al evaluarse la condición como el string vacío  "" ¡Ojalá te evite algún dolor de cabeza en el futuro!

Diego Andai

Ingeniero de software en Platanus

¡Genial! Te has suscrito con éxito.
¡Genial! Ahora, completa el checkout para tener acceso completo.
¡Bienvenido de nuevo! Has iniciado sesión con éxito.
Éxito! Su cuenta está totalmente activada, ahora tienes acceso a todo el contenido.