Vi esta sintaxis en otra publicación de StackOverflow y tenía curiosidad por saber qué hace:
var len = this.length >>> 0;
¿Qué >>>implica?
Vi esta sintaxis en otra publicación de StackOverflow y tenía curiosidad por saber qué hace:
var len = this.length >>> 0;
¿Qué >>>implica?
>>>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.
El operador >>> desplaza los bits de expression1 a la derecha el número de bits especificado en expression2. Los ceros se completan desde la izquierda. Los dígitos desplazados hacia la derecha se descartan.
Haciendo caso omiso de su significado previsto, es muy probable que lo vea utilizado:
>>> 0 es ú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 == 3
En su ejemplo, var len = this.length >>> 0esta es una forma de obtener una longitud entera para usar para iterar this, sea cual sea el tipo this.length.
Del mismo modo, ~~xse puede utilizar para convertir cualquier variable en un entero con signo.
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.
>>>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 que Math.floor(). No veo por qué esto sería necesario en su ejemplo, ya que generalmente una .lengthpropiedad (por ejemplo, de an Array) 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.
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 )
parseInt?