Eu vi essa sintaxe em outra postagem do StackOverflow e estava curioso para saber o que ela faz:
var len = this.length >>> 0;
O que isso >>>
implica?
javascript
Jey Balachandran
fonte
fonte
parseInt
?>>>
sempre define o bit de sinal para zero, mesmo se você mudar para zero bits.>>>
operador: stackoverflow.com/questions/3081987/…var length = list.length >>> 0;
(mesmo caso de uso que o seu)Respostas:
Esse é um operador de mudança à direita sem sinal . Curiosamente, é o único operador bit a bit que é unsigned em JavaScript.
fonte
Ignorando seu significado pretendido, é mais provável que você o veja usado:
>>> 0
é único por ser o único operador que converterá qualquer tipo em um número inteiro positivo:"string" >>> 0 == 0 (function() { }) >>> 0 == 0 [1, 2, 3] >>> 0 == 0 Math.PI >>> 0 == 3
Em seu exemplo,
var len = this.length >>> 0
esta é uma maneira de obter um comprimento inteiro para usar para iterarthis
, seja qual for o tipothis.length
.Da mesma forma,
~~x
pode ser usado para converter qualquer variável em um inteiro com sinal.fonte
>>>
?Esse operador é um deslocamento lógico para a direita. Aqui, o número é deslocado 0 bits. Um deslocamento de zero bits matemeticamente não deve ter efeito.
Mas aqui ele é usado para converter o valor em um inteiro de 32 bits sem sinal.
fonte
>>>
é um operador bit a bit, deslocamento para a direita com preenchimento zero .Acho que o único efeito de
>>> 0
em um número positivo é arredondar para baixo para o inteiro mais próximo, o mesmo queMath.floor()
. Não vejo por que isso seria necessário em seu exemplo, já que geralmente uma.length
propriedade (por exemplo, de anArray
) já seria um número inteiro.Eu também vi o ligeiramente mais curto
~~
usado da mesma forma:~~9.5 == 9; // true
.fonte
Math.abs()
quando usado para números negativos.>>> 0
em um número negativo, ele o converterá no elogio de 2 e, em seguida, fará o deslocamento certo. Portanto-14 >>> 0 == 1073741820
. ( msdn.microsoft.com/en-us/library/342xfs5s%28v=vs.94%29.aspx )