Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Concatenando letras e números.

<meta charset="UTF-8">
<script>
    var IDADE1 = 10;
    var IDADE2 = "20";
    var IDADE3 = 12;

    document.write("A média das idades é <br>");
    document.write( (IDADE1 + IDADE2 + IDADE3) / 3);
</script>

Eu não consegui entender porque o resultado disso é 34004. Uma variável que contem "" trata-se de uma string e um dado do tipo texto não processa operações matemáticas. Alguém consegue me explicar, por favor?

3 respostas
solução!

Boa noite, Wilber! Como vai?

Ao fazer IDADE1 + IDADE2 + IDADE3 o resultado será uma concatenação dos valores de modo que será obtido "102012". Ou seja, uma string!

Contudo, no JavaScript operações como subtração, multiplicação e divisão, mesmo quando envolvem valores textuais são realizadas corretamente desde que os valores das strings envolvidas sejam apenas números! Caso contrário, ou seja, caso uma das strings envolvidas não sejam composta apenas por números, o resultado será NaN ( um valor específico do JS que indica um not a number ).

Sendo assim, no caso do seu código "102012"/3 resulta em 34004 que é exatamente o resultado da operação aritmética em questão!

Exemplos práticos

"102012"/"2"  // 51006
"102012"-"1"  // 102011
"102012"*"1"  // 102012
"m102012"/3  // NaN

Obs. 1: Essa regra só não vale para o operador +, pois quando strings são envolvidas nessa operação o que ocorre é a concatenação e não a soma aritmética.

Obs. 2: Com exceção do último exemplo, os resultados dessas operações mostradas são sempre numéricos e não strings!

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Boa noite, Gabriel.

Entendi a questão. Foi ótima a sua explicação, para mim ficou claro. Muito obrigado!!

Por nada, Wilber! Sempre que precisar de alguma ajuda é só mandar aqui no fórum da Alura!

Grande abraço e bons estudos, meu aluno!