JavaScript: parseInt() não é bugado

junho 22, 2008

Ouço muitas pessoas dizendo que a função parseInt() é bugada, em alguns casos de conversão de números como 07 ou 08 ela não retorna o valor esperado.
Só que muita gente não sabe sobre um segundo parâmetro que a função pode receber.

sintaxe: parseInt(string, base);

Este segundo parâmetro é simplesmente a base que você converterá o número, ela pode ser decimal, octal ou hexadecimal.
Quando não especificamos este parâmetro, é assumido por padrão a base decimal (10). Exceto quando você inicia a string com 0 ou 0x que automaticamente é assumido a base octal (8 ) ou hexadecimal (16).
Esta é a causa do retorno inesperado, pois quando você converte o número 08 sem especificar a base, é assumido a base octal e nesta base este número não existe (somente de 0 a 7), assim retornando o valor inesperado 0.

A forma correta, forçando a conversão na base decimal:

1 parseInt(08, 10); // retorna 8

Então por segurança, especifique sempre a base para qual deseja converter, ainda mais quando for um valor dinâmico.

Anúncios

3 Responses to “JavaScript: parseInt() não é bugado”

  1. WebLoco Says:

    Muito bom, isso mesmo.

  2. Rafael Buy Says:

    Perdi alguns minutos achando que era algum bug no parseInt(), até que encontrei seu post. Muito Bom. Obrigado.


  3. Ajudou bastante, estava com um problema em um plugin, que era justamente o parseInt(). Obrigado

    Abraços


Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

%d blogueiros gostam disto: