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)

Jeden komentarz


  1. jesio on 12 mar 2011

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


Skomentuj