Irei comentar sobre um dos erros mais comuns em códigos JavaScript, que é o uso correto da função parseInt. Essa função converte uma string em um inteiro e possui a seguinte sintaxe:
parseInt(string, base)
corresponde ao conjunto de caracteres que deseja converter para inteiro;
BASE
usada para especificar qual o sistema de numeração que deseja converter a string. Podendo receber valores de 2 a 36, dentre os mais utilizados podemos destacar 10 (decimal), 2 (binário), 16 (hexadecimal) e 8 (octal). É opcional ! É justamente no fato do paramento base ser opcional é que mora o perigo. Pois, caso o mesmo não seja informado, o interpretador JavaScript irá se comportar das seguintes formas:
parseInt("01"); //retorna 1
parseInt("02"); //retorna 2
parseInt("03"); //retorna 3
parseInt("04"); //retorna 4
parseInt("05"); //retorna 5
parseInt("06"); //retorna 6
parseInt("07"); //retorna 7
parseInt("08"); //retorna 0
parseInt("09"); //retorna 0
parseInt("10"); //retorna 10
parseInt("-222"); //retorna -222
parseInt(" 122"); //retorna 122
parseInt("fellipe1234"); //retorna NaN
Essa forma de interpretação tem causado muitos problemas, sendo assim a nova versão da linguagem padrão, ECMAScript 5, teve esse comportamento modificado e essa detecção implícita de octal foi removida do parseInt.
Solução
Quando necessitar fazer o uso da função parseInt, informe para qual sistema de numeração que a string deverá ser convertida.
parseInt ("08", 10); //retorna 8
parseInt ("09", 10); //retorna 9