Ho visto questa sintassi su un altro post StackOverflow ed ero curioso di sapere cosa fa:
var len = this.length >>> 0;
Cosa >>>implica?
Ho visto questa sintassi su un altro post StackOverflow ed ero curioso di sapere cosa fa:
var len = this.length >>> 0;
Cosa >>>implica?
>>>imposta sempre il bit del segno su zero, anche se si sposta di zero bit.
>>>operatore: stackoverflow.com/questions/3081987/...
var length = list.length >>> 0; (stesso caso d'uso del tuo)
Risposte:
Questo è un operatore di turno a destra non firmato . È interessante notare, è l'unico operatore di bit a bit che viene non firmati in JavaScript.
L'operatore >>> sposta i bit di espressione1 a destra del numero di bit specificato in espressione2. Gli zeri vengono inseriti da sinistra. Le cifre spostate a destra vengono scartate.
Ignorando il suo significato inteso, questo è molto probabilmente dove lo vedrai usato:
>>> 0 è unico in quanto è l'unico operatore che convertirà qualsiasi tipo in un numero intero positivo:
"string" >>> 0 == 0
(function() { }) >>> 0 == 0
[1, 2, 3] >>> 0 == 0
Math.PI >>> 0 == 3
Nel tuo esempio, var len = this.length >>> 0questo è un modo per ottenere una lunghezza intera da utilizzare per iterare this, qualunque sia il tipo this.length.
Allo stesso modo, ~~xpuò essere utilizzato per convertire qualsiasi variabile in un intero con segno.
Quell'operatore è uno spostamento logico a destra. Qui il numero è spostato di 0 bit. Uno spostamento di zero bit matematicamente non dovrebbe avere alcun effetto.
Ma qui viene utilizzato per convertire il valore in un intero a 32 bit senza segno.
>>>è un operatore bit-saggio, spostamento a destra di riempimento zero .
Penso che l'unico effetto di >>> 0su un numero positivo sia arrotondare per difetto al numero intero più vicino, come Math.floor(). Non vedo perché questo sarebbe necessario nel tuo esempio, poiché generalmente una .lengthproprietà (ad esempio di un Array) sarebbe già un numero intero.
Ho visto anche il leggermente più corta ~~utilizzata nello stesso modo: ~~9.5 == 9; // true.
Math.abs()quando viene utilizzato per i numeri negativi.
>>> 0su un numero negativo, lo converte in un complimento di 2, quindi esegue lo spostamento a destra. Quindi -14 >>> 0 == 1073741820. ( msdn.microsoft.com/en-us/library/342xfs5s%28v=vs.94%29.aspx )
parseInt?