Converter uma string em um inteiro em JavaScript *

Para converter uma string em um inteiro, você obviamente pode usar a função parseInt.

parseInt('3', 10); // returns 3
parseInt
('3.75', 10); // returns 3

No entanto, em muitos casos, podemos usar também o operador de negação, que é um til “~”.

~~'3'; // returns 3
~~'3.75'; // returns 3

Durante as operações bit a bit, os operandos são convertidos em inteiros de 32 bits. Podemos usá-lo para converter uma string em um número negando os bits de uma string (ela será convertida naquele momento) e, em seguida, negando o resultado.

Lembre-se de que o resultado dessa operação não será igual ao resultado do uso da função parseInt. Para ver a diferença, você deve converter algo que não se pareça com um número em primeiro lugar, por exemplo, converter uma string que comece com letras.

parseInt('a', 10); // returns NaN
parseInt
({}, 10); // returns NaN
parseInt
('123abc', 10); // returns 123
parseInt
('abc123', 10); // returns NaN


~~'a'; // returns 0
~~{}; // returns 0
~~'123abc'; // returns 0
~~'abc123'; // returns 0

Também tenha em mente que o inteiro de 32 bits é um número em um intervalo de -2147 483 648 a +2 147 483 647. Isso significa que, quando esse intervalo for excedido, esse número não será automaticamente convertido em algo com um intervalo mais amplo.

parseInt('1387037027228', 10); // returns 1387037027228
~~'1387037027228'; // returns -237409380

Se você tiver algum comentário ou não estiver satisfeito com o meu inglês – escreva abaixo 🙂

* Observe que o resultado final dessa operação não será um número inteiro, pois não existe tal tipo em JS – o resultado será uma instância de Number