Javascript – Pegadinha no parseInt()
by Luiz Paulo | junho 13, 2009 | 2 Comments »Já estamos cansados de saber que javascript é totalmente dinâmico e podemos mudar facilmente o tipo das variáveis.
Uma das facilidades em javascript é a conversão de variáveis em inteiro, com a função parseInt().
Só que essa função tem uma pegadinha que pode atrapalhar bastante aos desatentos.
Sua sintaxe é bem simples como segue:
var number = "123456348965"; var integerNumber = parseInt(number); alert(integerNumber); //123456348965
Nesse caso, tranquilo! Nenhum problema. Mas se, por exemplo, quisermos converter uma string "010" teremos problemas.
Veja o exemplo:
var number = "010"; var integerNumber = parseInt(number); alert(integerNumber); //8
Isso acontece pois o número é automaticamente detectado como Octal.
Para resolver esse problema, a função parseInt pode receber 2 parâmetros.
parseInt(string, radix)
Onde:
string = String a ser transformada
radix = Numeral que você quer se basear (de 2 a 36)
Veja então como fica a solução para este problema:
var number = "010"; var integerNumber = parseInt(number, 10); //10 = base decimal alert(integerNumber); //10
Pegadinha desvendada e problema resolvido!
Posts Relacionados
Categorias: Desenvolvimento web, JavaScript, Linguagens
Tags: , code, javascript, pegadinha








2 Comentários
Essa é muito boa… mas não é pegadinha.
Em Computação convensionou-se (se eu pegar quem foi, dou-lhe uma surra!) que números começados por zero (
0) estão na representação octal.Assim como números começados por
0xestão na representação hexadecimal.Assim,
010seria 8,10seria 10 mesmo e0x10seria 16.Sabe o famigerado
0644das permissões de sistemas de arquivo GNU/Linux? Pois é… não tem a ver com o número 644, mas com o número 420. A representação octal aqui é simplesmente conveniente, pois cada grupo de permissões tem três bits (2³=8).[]'s
Cacilhas, La Batalema
[...] post fala sobre algumas falhas do Javascript. Umas delas eu já havia comentado aqui no blog Javascript – Pegadinha no parseInt(), mas ele foi bem mais a fundo nas pegadinhas, [...]