sexta-feira, 3 de maio de 2013

ParseInt no Firefox

Tive problemas com o comando parseInt no firefox.
Algumas vezes ele não retornava o valor certo, mas  sim retornava 0.
Executando isso no console do Firebug, retornou algo estranho:

 console.log(parseInt('01'));  
 console.log(parseInt('02'));  
 console.log(parseInt('03'));  
 console.log(parseInt('04'));  
 console.log(parseInt('05'));  
 console.log(parseInt('06'));  
 console.log(parseInt('07'));  
 console.log(parseInt('08'));  
 console.log(parseInt('09'));  
 console.log(parseInt('010'));  

Retornou isso:
 1  
 2  
 3  
 4  
 5  
 6  
 7  
 0 //não deveria ser 8, 9 e 10?
 0  
 8  

Segundo essse link, isso acontece porque o navegador está retornando esse valor em base 8, e não base 10.
Pra resolver isso, precisamos dizer a ele pra usar base 10:
 console.log(parseInt('01','10'));  
 console.log(parseInt('02','10'));  
 console.log(parseInt('03','10'));  
 console.log(parseInt('04','10'));  
 console.log(parseInt('05','10'));  
 console.log(parseInt('06','10'));  
 console.log(parseInt('07','10'));  
 console.log(parseInt('08','10'));  
 console.log(parseInt('09','10'));  
 console.log(parseInt('010','10'));  


Que no fim vai  retornar:
 1  
 2  
 3  
 4  
 5  
 6  
 7  
 8  
 9  
 10  


Nenhum comentário: