Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida em relação a obrigatoriedade do parseInt

Fiquei com uma dúvida em relação a nescessidade do parseInt no último exercício (06).

A quetão pede que "Ao clicar no botão soma, peça 2 números inteiros e exiba o resultado da soma em um alerta."

A função soma() foi definida no index.html para ser executada onclick e descrita da seguinte forma no app.js:

function soma() {
    let numero1 = prompt('Insira um número inteiro qualquer:');
    let numero2 = prompt('Insira um segundo número inteiro qualquer:');
    let somaDosNumeros = numero1 + numero2;
    alert(`${numero1} + ${numero2} = ${somaDosNumeros}.`);
}

Entretanto, nos testes, o resuldado final da operação não é o esperado. Por exemplo ao atribuir numero1 = 1 e numero2 = 2 o resultado final é 12. Ou seja o sistema apenas "junta" os dois valores e não realiza a soma deles.

Observando a resolução da questão pelo instrutor fica claro a obrigatoriedade do paseInt no prompt que define as variáveis numero1 e numero2

function soma() {
    let numero1 = parseInt(prompt('Digite o primeiro número'));
    let numero2 = parseInt(prompt('Digite o segundo número'));
    let somaDosNumeros = numero1 + numero2;
    alert(`${numero1} + ${numero2} = ${somaDosNumeros}.`);
}

Neste caso o resultado da soma no exempro de 1+ 2 é igual a 3.

Gostaria de entender a nescessidade do parseInt para que a soma ocorra e não a junção dos dois números como no código que escrevi primeiro. O que não faz sentido para mim é que a linha 4 que efetivamente realiza a soma das duas variáveis é a mesma nos dois casos.

Nota: Alterei o nome das variáveis e da função na resolução do instrutor apenas para que sejam as mesmas do código que escrevi para facilitar a comparação entre os dois, sendo a única diferença a utilização do parseInt.

Agradeço disposição todos em ajudar aqui, Obrigado;

1 resposta
solução!

Oi Thiago,

A sua dúvida é bastante comum e está relacionada ao tipo de dados que o JavaScript utiliza. Quando você utiliza o prompt(), o que é retornado é sempre uma string, mesmo que o usuário insira um número. No seu primeiro exemplo, ao fazer let somaDosNumeros = numero1 + numero2;, o JavaScript está realizando a concatenação de strings, e não a soma numérica. Por isso, ao inserir "1" e "2", o resultado é "12".

O parseInt é uma função que converte uma string em um número inteiro. Ao utilizar parseInt(prompt(...)), você garante que numero1 e numero2 sejam tratados como números ao realizar a soma. Assim, no segundo exemplo, a operação correta 1 + 2 resulta em 3, que é o comportamento esperado.

Para ilustrar melhor:

let numero1 = "1"; // string
let numero2 = "2"; // string
let soma = numero1 + numero2; // concatenação, resultado: "12"

let numero1Int = parseInt("1"); // número
let numero2Int = parseInt("2"); // número
let somaInt = numero1Int + numero2Int; // soma, resultado: 3

Portanto, a necessidade do parseInt é garantir que você está lidando com números, permitindo que operações matemáticas sejam realizadas corretamente.

tux matrix    Caso este post o tenha ajudado, por favor, marcar como solucionado ☑️. Bons Estudos! 🤓