Conversão de tipo automático em JavaScript
As seguintes expressões todas em JavaScript são bem óbvias.
var x = 10 + 10;
O valor dex
é20
.
x = 10 + '10';
O valor dex
neste caso é1010
porque o+
operador está sobrecarregado. Se algum dos operandos for do tipo string, será feita a concatenação de strings e se todos os operandos forem números, a adição será executada.
x = 10 - 10;
x = 10 - '10';
Em ambos os casos, o valor dex
será0
porque o-
operador não é sobrecarregado dessa forma e todos os operandos são convertidos em números, se eles não estiverem antes da subtração real ser executada (você pode esclarecer, se de qualquer maneira eu estiver errado).
O que acontece na seguinte expressão.
x = '100' - -'150';
O valor dex
é250
. Que também parece ser óbvio, mas esta expressão parece ser o equivalente à seguinte expressão.
x = '100' +'150';
Se tivesse sido o caso, essas duas cadeias teriam sido concatenadas e atribuídas100150
parax
. Então, por que a adição é executada neste caso?
EDITAR:
+'10' + 5
devolve15
e'a' + + 'b'
devolveaNaN
. Alguem sabe por quê?