Usar parseInt () é uma má ideia, principalmente porque nunca falha. Também porque alguns resultados podem ser inesperados:
parseInt('09', 10);
// return 0 on firefox, nodejs
O que eu uso no lugar:
function cleanInt(x) {
x = Number(x);
return x >= 0 ? Math.floor(x) : Math.ceil(x);
}
Por que devo fazer assim?
se o texto não for um número (como “123abc”), ele retornará NaN. Parece-me um comportamento melhor. Além disso, a função pode lidar com o Infinito, que também é um número.
parseInt('123abc',10); //return 123
cleanInt('123abc'); //return NaN
parseInt('Infinity',10); //return NaN
cleanInt('Infinity') //return Infinity
typeof cleanInt('Infinity') // return "number"