quarta-feira, 2 de abril de 2014

[JavaScript] - Conversão implícita

Olá pessoal, vejam o código abaixo e tentem responder sem executar. Quais os valores impressos?


Resposta:

valor1 = 34
valor2 = 8
valor3 = 32
valor4 = 2010

Trata-se de uma conversão implícita que possui dependência tanto no operador como também na posição. Aqui percebe-se claramente o risco da tipagem fraca.

No primeiro caso, temos o operador "+" aplicado a um número e uma string. O número é o 3 e a string está entre aspas duplas "4". Quando você utiliza o operador + aplicado a uma string, então é feita a concatenação, o resultado é uma string, nesse caso a string "34". Você pode utilizar a função typeof() para saber o tipo de uma variável.

Já no segundo exemplo não é aplicado o operador "+", mas sim o operador "*". Como o operador é diferente de "+", então é feita a conversão da string para number e depois é realizada a operação de multiplicação, por isso o resultado é 8.

No valor3, temos a concatenação de 3 com "4" (o 3 é convertido para string e depois concatenado à string "4") resultando na string "34". Logo depois é feita a conversão da string "34" para number e por fim a subtração de 34 por 2 resultando em 32.

Em valor4, temos a concatenação das strings "4" e "0" resultando na string "40". Depois é feita a transformação da string "40" para number, logo após é realizada a operação de divisão por 2 resultando no valor 20 e, por último, é utilizado o operador + com a string "10". Como o operador "+" é aplicado a string "10", então é feita a conversão do valor 20 para string e então é concatenada a string "20" com a string "10" resultando na string "2010".

Qual a lição que fica disso? Cuidado com as operações, pois você pode introduzir um novo tipo de dado. Quaisquer dúvidas deixem nos comentários, até a próxima.


Nenhum comentário: