Qué es la coerción de tipos
Por internet pululan muchísimos memes acerca de cómo Javascript trata ciertos datos y cómo cambian de forma misteriosa, lo que hacen que muchos se pregunten si Javascript es un lenguaje defectuoso.
Pero nada más lejos de la realidad, el comportamiento que muchas veces ves en esos memes esconde el funcionamiento real de javascript con los tipos, detrás de todo esto se encuentra un concepto llamado Coercción de tipos.
Pero, ¿Qué es la Coerción de tipos?
Javascript es un lenguaje de tipado dinámico y débil, lo que significa que las variables pueden ser declaradas sin especificar un tipo y que es posible modificar el tipo de una variable ya declarada. Este comportamiento es controlado por el motor de Javascript, que puede realizar conversiones automáticas de tipo, conocidas como coerción de tipos.
Coerción implícita
La coerción implícita ocurre cuando Javascript convierte automáticamente un tipo de dato a otro sin que el programador lo solicite. Un ejemplo común es cuando se 'suman' datos de diferentes tipos. Javascript intenta encontrar la mejor forma de combinar ambos valores, lo que puede llevar a resultados inesperados.
console.log(2 + '3') // '23'
En este caso, el número 2 se convierte en una cadena y se concatena con '3', resultando en '23'. Esto se debe a que Javascript favorece la concatenación de cadenas cuando uno de los operandos es una cadena.
Coerción explícita
A diferencia de la implícita, la coerción explícita es cuando el programador convierte manualmente un tipo de dato a otro usando funciones como Number(), String(), o Boolean().
console.log(Number('5') + 2); // 7
Aquí, la cadena '5' es convertida explícitamente a un número usando la función Number(), por lo que se puede realizar una suma numérica.
En definitiva, Javascript no es un lenguaje defectuoso, simplemente maneja los tipos de forma flexible, lo que puede parecer confuso al principio.
La coerción de tipos, aunque a veces impredecible, es una característica poderosa cuando la entiendes bien. Así que, la próxima vez que veas un meme de Javascript, sabrás que detrás de esos resultados extraños hay una lógica sólida que puedes usar a tu favor