Vi esta sintaxis en otra publicación de StackOverflow y tenía curiosidad por saber qué hace:
var len = this.length >>> 0;
¿Qué >>>implica?
javascript
Jey Balachandran
fuente
fuente

parseInt?>>>siempre establece el bit de signo en cero, incluso si cambia en cero bits.>>>operador: stackoverflow.com/questions/3081987/…var length = list.length >>> 0;(mismo caso de uso que el suyo)Respuestas:
Es un operador de turno a la derecha sin firmar . Curiosamente, es el único operador bit a bit que no está firmado en JavaScript.
fuente
Haciendo caso omiso de su significado previsto, es muy probable que lo vea utilizado:
>>> 0es único en el sentido de que es el único operador que convertirá cualquier tipo en un entero positivo:"string" >>> 0 == 0 (function() { }) >>> 0 == 0 [1, 2, 3] >>> 0 == 0 Math.PI >>> 0 == 3En su ejemplo,
var len = this.length >>> 0esta es una forma de obtener una longitud entera para usar para iterarthis, sea cual sea el tipothis.length.Del mismo modo,
~~xse puede utilizar para convertir cualquier variable en un entero con signo.fuente
>>>?Ese operador es un desplazamiento lógico a la derecha. Aquí el número se desplaza 0 bits. Un desplazamiento de cero bits matemáticamente no debería tener ningún efecto.
Pero aquí se utiliza para convertir el valor en un entero de 32 bits sin signo.
fuente
>>>es un operador bit a bit, desplazamiento a la derecha de llenado cero .Creo que el único efecto de
>>> 0sobre un número positivo es redondear hacia abajo al entero más cercano, igual queMath.floor(). No veo por qué esto sería necesario en su ejemplo, ya que generalmente una.lengthpropiedad (por ejemplo, de anArray) ya sería un número entero.También he visto el poco más corto
~~utilizado de la misma manera:~~9.5 == 9; // true.fuente
Math.abs()cuando se usa para números negativos.>>> 0en un número negativo, lo convierte en el complemento de 2, luego hace el cambio correcto. Por eso-14 >>> 0 == 1073741820. ( msdn.microsoft.com/en-us/library/342xfs5s%28v=vs.94%29.aspx )