Javascript – Pegadinha no parseInt()
Postado por: Luiz Paulo emJá 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. Vejam 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!













Bom post Luizão .. vlw.
Ótimo post! Não sabia dessa!
Putz, esta para mim é novidade, sacanagem a função assumir 2 bases numéricas por causa de um zero a esquerda
Estava lendo isso quase agora num manual
Caramba! São 9 anos que eu trabalho com JavaScript e não sabia dessa pegadinha!
Muito obrigado por nos informar!
Nossa cara, não sabia dessa não … Valeu, muito bom!!!
Pow, valeu cara!! Tava tendo esse problema e o sistema dava um resolvendo maluco… Primeiro link que entrei foi o seu e resolveu meu problema.
Abraços
Excelente dica pros iniciantes.
Isto é um erro muito comum, acabei descobrindo por conta própria na época que tive esses problemas. Considero isso o básico que deve ser aprendido para qualquer um que queira inventar de fazer javascript.
Cai aqui por acaso, mas foi bom pra eu ver que álguem de dispôs a colocar fácil a solução!
Parabéns Luiz!
[]‘s
Esta dica foi ótima! =)
Muito obrigada pela solução! Tive esse problema ao trabalhar com datas no formato ddmmaaaa ( 01022006 , por exemplo) e não estava entendendo por que não estava funcionado. Valeu mesmo!