Converta uma String em Int sem parseInt ()

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"