w3schools ternario tag operator operador node multiple ejemplo change assignment javascript

ternario - JavaScript triple mayor que



title html (4)

Es un operador de cambio a la derecha sin signo . Curiosamente, es el único operador bit a bit que no tiene firma en JavaScript.

El operador >>> desplaza los bits de expression1 justo por el número de bits especificado en expression2. Zeroes se completan desde la izquierda. Los dígitos desplazados de la derecha se descartan.

Vi esta sintaxis en otra publicación de StackOverflow y tenía curiosidad sobre lo que hace:

var len = this.length >>> 0;

¿Qué implica >>> ?


Ese operador es un cambio lógico correcto. Aquí el número se desplaza 0 bits. Un cambio de cero bits matemáticamente no debería tener ningún efecto.

Pero aquí se usa para convertir el valor a un entero de 32 bits sin signo.


Ignorando su significado intencionado, es muy probable que lo veas usar:

>>> 0 es único ya que es el único operador que convertirá cualquier tipo a 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 >>> 0 , esta es una manera de obtener una longitud de entero para usar para iterar sobre this , cualquiera que sea el tipo this.length .

Del mismo modo, ~~x se puede usar para convertir cualquier variable en un entero con signo.


>>> es un operador bit-wise, zero-fill right shift .

Creo que el único efecto de >>> 0 en un número positivo es redondear al entero más cercano, igual que Math.floor() . No veo por qué esto sería necesario en su ejemplo, ya que generalmente una propiedad .length (por ejemplo, de una Array ) ya sería un número entero.

También he visto el ~~ poco más corto usado de la misma manera: ~~9.5 == 9; // true ~~9.5 == 9; // true .