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

Concatenação

Minha dúvida é acerca da concatenação, no final dos códigos. No primeiro código, fiz o cálculo dos pontos diretamente em "mostra", mas tive que colocar o cálculo entre parenteses para funcionar. No segundo, fiz uma variável calculo e chamei em "mostra" e funcionou. Quero entender, porque no primeiro caso ele entendeu a variável empate como string e no segundo a variável calculo como número.

Código 1:
<meta charset=UTF-8>

<script>

    function pulaLinha(){
        document.write("<br");

    }

    function mostra(frase){
        document.write(frase);
        pulaLinha();
    }

    var vitorias = parseInt(prompt("Qntd. vitórias:"));
    var empates = parseInt(prompt("Qntd. de empates"));

     //mostra("Total de pontos: " + vitorias*3+empates);  (deu problema)

    mostra("Total de pontos: " + (vitorias*3+empates));

</script>
Código 2:
<meta charset=UTF-8>

<script>

    function pulaLinha(){
        document.write("<br");

    }

    function mostra(frase){
        document.write(frase);
        pulaLinha();
    }

    var vitorias = parseInt(prompt("Qntd. vitórias:"));
    var empates = parseInt(prompt("Qntd. de empates"));

     var calculo = vitorias*3+empates;

    mostra("Total de pontos: " + calculo);

</script>
2 respostas
solução!

Lucas, não entendi muito bem a sua dúvida, mas vamos lá, veja se é isso.

Tanto a variável empates como a variável calculo são números inteiros. A primeira porque você executou um parseInt na entrada dela e a segunda porque foi resultado do cálculo de números inteiros.

Agora, quando você concatena string com número o resultado sempre é uma string. Em ambos os casos o parâmetro resultante que vai para a função mostra() é uma string.

No primeiro caso não funcionou sem parenteses porque você concatenou a string Total de pontos: com o número vitorias x 3 resultando em outra string e essa outra string não somou o resultado de empates mas simplesmente concatenou o primeiro resultado com o mesmo.

Os parenteses servem para indicar qual operação será feita primeiro. Como a primeira operação foi o cálculo (vitorias*3+empates) ele primeiro fez esse cálculo e depois concatenou com Total de pontos:.

O código 2 está perfeito, é sempre indicado trabalhar com variáveis ao invés de fazer as contas diretamente como no código 1.

Abraços e bons estudos!

Humm...Entendi, não havia percebido que o resultado do primeiro código, sem os parenteses, as variáveis retornam um número, mas como estão concatenando com uma string, também viram string...legal..

Obrigado!