4
respostas

[DÚVIDA] Onde está o erro

Fala devs,

Não entendi porque esse código gera 34004.

Alguém pode me explicar?

<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>
4 respostas

A sua variável IDADE2 está entre aspas, então sua variável está sendo identificada como uma string. Na hora de fazer a soma das idades devidamente, o JavaScript entende como uma concatenação por ser uma string (texto, pois está entre aspas) e o resultado da concatenação fica 102012, e por fim divide essa soma por 3 que resulta em 34004. Então o certo seria as variáveis identificadas como números serem declaradas dessa forma nessa situação:

var IDADE2 = 20;

Sem aspas, pois assim seria efetuada a soma e não uma concatenação.

E sobre as letras maiúsculas na variável , não há problema? Porque?

Olá, Renata Viviane!

Não há problema algum na execução do código, desde que você se referencie exatamente do mesmo jeito posteriormente. Porém é considerado uma péssima prática, há algumas convenções para nomear as variáveis adotadas pelos programadores, como por exemplo iniciar com letras minúsculas e a primeira letra de cada palavra em seguida é escrita com letra maiúscula, "exatamenteAssimSeIssoFosseUmaVariavel", perceba também que você não deve colocar acentos, espaços, caracteres especiais e nem iniciar uma variável com números, pois isto sim poderia causar um problema na definição da variável em tempo de execução. Outros exemplos válidos são: "escrever_assim" ou "escrever-assim".

Minha dúvida é sobre a concatenação. Se adicionarmos uma string a um número, ele não deveria se tornar uma string? Tudo bem que da esquerda pra direita a operação foi number + string + number. O tipo que prevalece é o do termo que foi somado por último?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software