Zwyczajowo kiedy potrzebujemy przetworzyć tekst albo liczbę typu float do liczny typu int stosujemy instrukcje :
parseInt('12.345',10) //wynik 12
parseInt(12.345,10) //wynik 12
Jednak dowiedziałem się (gdzieś w materiałach Thomasa Fuchsa lecz nie mogę odnaleźć źródła ), że można to zrobić szybciej przez operację bitowe.
~~(12.345) // wynik 12 (12.345)|0 // wynik 12
Z jakiegoś powodu działa to także na łańcuchach:
~~('12.345') // nie wiem jak to działa ale 12
('12.345')|0 // wciąż 12
Metoda ta powinna być szybsza (nie sięgamy do żadnych funkcji) i dodatkowo zawierająca mniej kodu. Jednak moim zdaniem dwa razy się zastanowić nad stosowaniem jej ponieważ tracimy bardzo na czytelności kodu. Druga sprawa, że metoda ta inaczej sobie radzi z łańcuchami, które w żaden sposób nie dają się przekształcić w liczbę.
parseInt('co to będzie?') // klasyczny NaN
~~('a tutaj?') // 0
Źródła:
Mozilla Developer Center – Bitwise Operators
Blog Thomasa Fuchsa (autora miedzy innymi script.aculo.us)


do czasu aż wejdzie jakaś nowa wersja preglądarki, na której nie bedzieto działało