Perigo octal do JavaScript: soluções alternativas para o mau comportamento do parseInt
A função parseInt do JavaScript pode tropeçar ao encontrar números com zeros à esquerda. O problema decorre de sua tendência de interpretar zeros à esquerda como dígitos octais, levando a resultados errôneos.
Exemplo:
parseInt('01'); // 1 parseInt('08'); // 0 (invalid octal digit)
Alternativas:
A solução mais direta é fornecer explicitamente a base ou raiz do número. Isso pode ser feito usando o segundo parâmetro de parseInt:
parseInt('08', 10); // 8 (specifying base 10)
Alternativamente, o construtor Number pode ser usado para analisar números, incluindo aqueles com zeros à esquerda:
Number('08'); // 8
Outra abordagem é converter a string para base 10 antes de analisá-la:
parseInt(parseInt('08', 8).toString(), 10); // 8 (convert octal to base 10)
Expressões regulares podem ser empregadas para remover zeros à esquerda:
parseInt(/^0 (.*)$/gm('008')); // 8 (match and capture non-zero digits)
Nota:
Na 5ª edição do JavaScript (ECMA-262), o comportamento de parseInt mudou, eliminando a questão da interpretação octal. No entanto, para compatibilidade com versões mais antigas do JavaScript, é recomendado usar uma das soluções alternativas mencionadas acima ao encontrar números com zeros à esquerda.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3