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

Por que o resultado aparece como se eu não tivesse ultilizado parseInt?

No resultado de vitórias 3 e empates 1 temos 91 envez de 10, porquê? É como se o parseInt não estivesse ali

<meta charset=("UTF-8")>


<script>

function pulaLinha() {

document.write("<br><br>")




}

function mostra(frase) {

pulaLinha();
document.write (frase);
pulaLinha();





}

var vitorias = parseInt(prompt("Entre com o número de vitórias "));
var empates = parseInt(prompt("Entre com o número de empates "));

mostra ("Seus pontos são "+ (vitorias * 3) + empates);

</script>
3 respostas
solução!

É necessário parenteses(definem uma prioridade de solução) englobando a operação antes de concatenar com o texto, senão os números serão entendidos como strings separadamente ao invés de como uma conta matemática, pois só o resultado dela que precisa ser concatenado.

mostra ("Seus pontos são "  +   ( (vitorias * 3) + empates )   );

Obrigado! Mas por quê é o número é entendido como string sem os parênteses?

O número é entendido como string sem os parênteses, pois não está explícita a prioridade da conta, já que antes dela tem a string "Seus pontos são " e o sinal de '+' depois dessa string vai tratar os demais elementos, mesmo sendo números, como strings também. Da mesma forma que na matemática 2+ 4/2 =4 e (2+4)/2=3 os parênteses fazem toda a diferença na interpretação do código, sem eles todos os 3 itens têm a mesma prioridade. Se uma string é somada a um número, ela trata esse número como string também e assim concatena, mas se um número é somado com outro número, é entendido como uma conta matemática e solucionado. Logo, nesse caso, apenas o resultado da conta é que precisa ser lido como string e concatenado, então tem que ser resolvido primeiro e são os parênteses que indicam isso, como na matemática. Sem os parênteses são 3 itens concatenados, mas com os parênteses são só 2 itens concatenados, pois o que está dentro deles acaba sendo considerado um elemento apenas, que é o resultado da conta.

Outra solução possível seria:

var resultado = (vitorias * 3) + empates;
mostra ("Seus pontos são "  +  resultado  );

(Talvez ajude a entender que o número eventualmente vai ser tratado como string e concatenado ao texto para ser exibido na tela. O importante é ter a conta solucionada primeiro e no outro código são os parênteses extras que marcam e definem isso).