Una sinfonía en C#

Un pequeño aporte a la comunidad de habla hispana.

Javascript:¿Qué pasa cuando se mezclan el tipado débil y la concatenación?

Todos sabemos que Javascript es debilmente tipado, es decir, existen tipos de datos pero podemos hacer cosas como cambiar el tipo de una variable:

var a = "hola";
console.log(a);
a = 1;
console.log(a)

Y no pasa nada, también podemos comparar diferentes tipos sin mucho problema:

if("hola" == 1){
 //hacer algo
}

Y tampoco pasa nada, de hecho en este caso la comparación resulta ser false, pero podría ser true por la conversión de tipos:

if("1"==1){
//hacer algo
}

Esto último da como resultado true.

El tema del que quiero hablar es una curiosidad que es consecuencia de esto mismo; en el último if lo que hace Javascript es convertir comparar sin importar el tipo, es decir, hace una conversión para saber la equivalencia entre los dos valores, algo similiar pasa cuando concatenamos strings

"hola " + 1

El resultado es "hola 1", ya que Javascript convierte el 1 en un string, hasta acá todo bien, veamos otro ejemplo:

"123"+45

da como resultado "12345", es decir un string concatenado, pero...si hacemos:

"123"-45

Da como resultado 78, porque el signo - no sirve para concatenar strings, pero sí para restar, entonces en el caso de la suma Javascript convierte el 45 en un string y los concatena, pero en el caso de la resta convierte el "123" en un número y los resta, awesome.

Nos leemos pronto.

Loading