JavaScript triple greater than
I saw this syntax on another StackOverflow post and was curious as to what it does:
var len = this.length >>> 0;
What does >>>
imply?
Solution 1:
Ignoring its intended meaning, this is most likely where you'll see it used:
>>> 0
is unique in that it is the only operator that will convert any type to a positive integer:
"string" >>> 0 == 0
(function() { }) >>> 0 == 0
[1, 2, 3] >>> 0 == 0
Math.PI >>> 0 == 3
In your example, var len = this.length >>> 0
, this is a way of getting an integer length to use to iterate over this
, whatever type this.length
may be.
Similarly, ~~x
can be used to convert any variable into a signed integer.
Solution 2:
That's an unsigned right shift operator. Interestingly, it is the only bitwise operator that is unsigned in JavaScript.
The >>> operator shifts the bits of expression1 right by the number of bits specified in expression2. Zeroes are filled in from the left. Digits shifted off the right are discarded.
Solution 3:
That operator is a logical right shift. Here the number is shifted 0 bits. A shift of zero bits mathemetically should have no effect.
But here it is used to convert the value to an unsigned 32 bit integer.