1
resposta

[Dúvida] ParseInt ou Number?

Referente aos desafios dos contadores, fiquei com dúvida se está correto o uso do ParseInt, pois vi em um post a recomendação de usar Number(prompt()). Qual a diferença?

let contadorRegressivo = parseInt(prompt('Digite um número para iniciar a contagem regressiva:'));
while (contadorRegressivo > 0) {
    console.log(`Contagem regressiva... ${contadorRegressivo}`);
    contadorRegressivo--;        
}
alert('Fim da contagem regressiva!');

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
1 resposta

Oi Mariana.
Tudo bem?
Gostei da sua pergunta!
Querer entender sobre estes detalhes já lhe destaca em relação a maioria que apenas aceita que é assim e pronto.
Em JavaScript, tanto parseInt() quanto Number() podem ser usados para converter valores para números, mas eles têm comportamentos ligeiramente diferentes.
Aqui estão as principais diferenças:
parseInt()

  • Função: Converte uma string para um número inteiro.
  • Comportamento: Ele lê a string e converte até encontrar um caractere que não seja um número (ou o limite de caracteres que o número pode ter). Se o primeiro caractere não for um número, ele retorna NaN (Not-a-Number).
  • Base numérica (radix): Você pode especificar a base (radix) na qual a string deve ser convertida (por exemplo, base 10 para decimal, base 16 para hexadecimal, etc.).
  • Exemplo:
    parseInt("123px");  // 123
    parseInt("10.5");    // 10
    parseInt("abc");     // NaN
    parseInt("101", 2);  // 5 (interpreta "101" como um número binário)
    

Number()

  • Função: Converte qualquer valor (string, boolean, objeto, etc.) em um número.
  • Comportamento: Tenta converter a entrada inteira em um número. Se a string contém algo que não pode ser interpretado como número, o resultado é NaN.
  • Exemplo:
    Number("123px");  // NaN
    Number("10.5");    // 10.5
    Number("101");     // 101
    

Comparação

  • Conversão de string:
    • parseInt() pode ler até o primeiro caractere não numérico, enquanto Number() tenta converter toda a string.
    • Por exemplo, parseInt("123abc") retornaria 123, mas Number("123abc") retornaria NaN.
  • Conversão de tipos não-strings:
    • parseInt() é mais específico para strings. Para números, ele retorna apenas inteiros. Por exemplo, parseInt(10.5) retornaria 10.
    • Number() lida com uma gama mais ampla de tipos e pode converter números de ponto flutuante de forma mais precisa. Por exemplo, Number(10.5) retornaria 10.5.

Resumo:

  • parseInt(): Foca na conversão de strings para inteiros e ignora o que vem depois do primeiro caractere não numérico.
  • Number(): Tenta converter qualquer tipo em um número, incluindo strings, e retorna NaN se não conseguir fazer a conversão.
    Então, se você quiser garantir que está lidando com números inteiros e pode tolerar alguns caracteres extras, use parseInt().
    Caso contrário, se você precisar de uma conversão mais precisa e direta, use Number().
    Bons estudos e continue explorando os porques da linguagem.
    Até...