Durante el curso noté que el profesor no quedó del todo conforme con la explicación que dió acerca de la concatenación y la suma de los distintos tipos de datos que hay en JavaScript. Esto pudo ser un problema si estás aprendiendo a programar. Si vienes de otros lenguajes fuertemente tipados, quizá sólo te parezca un poco extraño.
En este pequeño tutorial, vamos a explicar paso a paso cómo entender el meme anterior (y, por consiguiente, cómo entender la concatenación y la suma)
Para empezar, hay que definir qué es la concatencación. La palabra “concatenar” viene del latín concatenare y significa “unir una cosa con otra”. En programación, la concatenación es propia de las cadenas de texto. Es decir, no podemos concatenar numeros, ni booleanos, ni nada que no sea un texto.
Adicional a ello, tenemos que aprender la diferencia entre un número y una cadena que contiene un numero. Por ejemplo:
La diferencia es que el segundo ejemplo está encerrado entre comillas y TODO lo que esté encerrado entre comillas es un texto (o cadena, cómo lo solemos llamar en programación)
Y, finalmente, debemos saber que el operador + (más) tiene dos funciones dentro de la programación: la primera es sumar (una operación propia de los numeros) y la segunda es concatenar (una operación propia de las cadenas).
Es decir, si nosotros ponemos un operador + (más) en medio de dos numeros, el resultado será un tercer número que representará el resultado de la suma (8 + 8 = 16). Por el contrario, si nosotros ponemos un operador + (más) en medio de dos cadenas, el resultado seŕa una tercer cadena que contendrá la unión de las dos cadenas anteriores (“alb” + “erto” = “alberto”).
Pero… ¿Qué pasa si nosotros ponemos un operador + (más) entre un número y una cadena?
Pues resulta que en este caso, es imposible efectuar una operación aritmética. Por ejemplo:
Lo anterior ocurre porque es imposible tratar a la cadena “alberto” como un número, por lo que no se puede sumar con el 8, así que lo más lógico es que el interprete de nuestro lenguaje “piense” que es mejor tratar al numero 8 como cadena y entonces concatenarlo con la otra cadena. Pero, ¿y si la cadena contiene un número?
El contenido de la cadena es irrelevante. Cuando nosotros ponemos el operador + entre un número y una cadena, siempre se tratará al número como una cadena; por lo que:
Para terminar de entender el meme, hay que saber que el operador + es el único operador aritmetico que tiene una doble función, por lo que, el operador menos (-), el operador por (*), o el operador entre (/), sólo podrán trabajar con números, no con cadenas. Esto significa que, en el caso de que utilicemos un operador aritmético en medio de un numero y de una cadena que contiene un número, lo lógico para el interprete del lenguaje es tratar a la cadena como número. Es decir que efectuará una operación aritmética y el resultado será un número que representa al resultado de dicha operación:
Ahora, te reto a que descubras que ocurriría si el contenido de la cadena no es un número, sino una palabra y trato de efectuar una operación aritmética. Por ejemplo 4 - “alberto”