Er verbirgt die Absicht des Codes.
Es handelt sich um zwei einzelne Tilde-Operatoren, d. h. es wird zweimal eine bitweise Ergänzung (bitweise nicht) durchgeführt. Die Operationen heben sich gegenseitig auf, so dass die einzige verbleibende Auswirkung die Umwandlung ist, die vor der Anwendung des ersten Operators erfolgt, d. h. die Umwandlung des Wertes in eine ganze Zahl.
Einige verwenden es als schnellere Alternative zu Math.floor
aber der Geschwindigkeitsunterschied ist nicht so dramatisch, und in den meisten Fällen handelt es sich nur um eine Mikrooptimierung. Wenn Sie keinen Code haben, der wirklich optimiert werden muss, sollten Sie einen Code verwenden, der beschreibt, was er tut, anstatt einen Code, der einen Nebeneffekt einer Nicht-Operation verwendet.
Update 2011-08:
Mit der Optimierung der JavaScript-Engine in Browsern ändert sich die Leistung für Operatoren und Funktionen. Bei aktuellen Browsern ist die Verwendung von ~~
anstelle von Math.floor
ist in manchen Browsern etwas schneller und in manchen Browsern überhaupt nicht schneller. Wenn Sie wirklich das gewisse Extra an Leistung benötigen, müssen Sie für jeden Browser einen anderen optimierten Code schreiben.
Siehe: Tilde vs. Boden