Web BizarroWeb Bizarro

Suscríbete a nuestro Newsletter

X

Únete a nuestra lista de correos para recibir semanalmente actualizaciones de nuestro contenido.

JavaScript Raro: La Verdad sobre El Operador Suma

JavaScript Raro: La Verdad sobre El Operador Suma 20.JUN.17

Diego Castaño
Colaborador de Web Bizarro

 

JavaScript es un lenguaje que fue diseñado en poco más de una semana y está lleno de pequeñas "funcionalidades"que pueden volvernos locos si no somos conscientes de su funcionamiento.

El operador suma ("+") de JavaScript es un buen ejemplo de esto.

Si evaluamos la siguiente línea de código:

1 + 1

Es evidente que obtenemos como resultado el valor numérico 2. Ahora bien, si evaluamos la expresión:

'1' + '1'

Obtendremos como resultado la siguiente cadena de texto: '11'.

Y si evaluamos la expresión:

'1' + 1

Seguiremos obteniendo este mismo resultado: '11'.

¿Curioso verdad? Pero no queda ahí la cosa. ¿Qué crees que obtendremos al evaluar la siguiente expresión?

+ '1' + 1

¡El resultado es el número 2! Pero, ¿cómo es esto posible?

Resulta que el operador suma de JavaScript está sobre cargado, es decir, tiene un comportamiento distinto dependiendo del tipo de operando sobre el que se aplique.

En concreto, tiene 3 comportamientos distintos:

  1. Si lo usamos como operador unario tratará de convertir el operando a tipo numérico: +'1' → 1
  2. Si lo utilizamos como operador binario (a + b)  sumará los números o...
  3. ¡Concatenará a y b si alguno de ellos es una cadena de texto!

En el caso del operador binario, primero se comprueba si a o b son cadenas de texto, si cualquiera de los operandos es una cadena el otro operando será convertido también a cadena y ambos se concatenarán:

'a' + 'b' = 'ab'

 

Si ninguno de los operando es una cadena, entonces ambos serán traducidos a tipo numérico y sumados.

1 + 1 = 2

 

Sabiendo esto, ¿qué resultado crees que da la siguiente expresión?

[] + {} 

Pista:  tiene truco. 

Suscríbete al canal de Diego Castaño para conocer la respuesta.