ho visto questa sintassi su un altro StackOverflow post ed era curioso di sapere ciò che fa:JavaScript triplicare maggiore di
var len = this.length >>> 0;
Cosa >>>
implica?
ho visto questa sintassi su un altro StackOverflow post ed era curioso di sapere ciò che fa:JavaScript triplicare maggiore di
var len = this.length >>> 0;
Cosa >>>
implica?
Questo è un unsigned right shift operator. È interessante notare che è l'unico bitwise operator che è senza firma in JavaScript.
L'operatore >>> sposta i bit di expression1 a destra del numero di bit specificato in expression2. Gli zeri sono compilati da sinistra. Le cifre spostate da destra vengono scartate.
>>>
è un operatore bit-saggio, zero-fill right shift.
Penso che l'unico effetto di >>> 0
su un numero positivo sia arrotondare al numero intero più vicino, uguale a Math.floor()
. Non vedo perché questo sarebbe necessario nel tuo esempio, poiché generalmente una proprietà .length
(ad esempio uno Array
) sarebbe già un numero intero.
Ho anche visto lo ~~
leggermente più corto utilizzato allo stesso modo: ~~9.5 == 9; // true
.
Dubito che sia lo stesso di 'Math.abs()' se usato per i numeri negativi. –
Se si esegue '>>> 0' su un numero negativo, lo converte in complimento di 2, quindi esegue lo spostamento corretto. Pertanto '-14 >>> 0 == 1073741820'.(http://msdn.microsoft.com/en-us/library/342xfs5s%28v=vs.94%29.aspx) –
@AlKepp - sì, ho visto l'errore e l'ho risolto - avrei dovuto provare prima, ma questo era chiaramente una domanda rapida :). – nrabinowitz
Questo operatore è un giusto spostamento logico. Qui il numero è spostato a 0 bit. Uno spostamento di zero bit matematicamente non dovrebbe avere alcun effetto.
Ma qui viene utilizzato per convertire il valore in un numero intero a 32 bit senza segno.
Ignorando le finalità del documento, questo è più probabile in cui lo vedrai utilizzato:
>>> 0
è unico in quanto è l'unico operatore in grado di convertire qualsiasi tipo di 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 >>> 0
, questo è un modo di ottenere un valore intero da utilizzare per iterare this
, qualunque sia il tipo this.length
sia.
Analogamente, ~~x
può essere utilizzato per convertire qualsiasi variabile in un numero intero con segno.
puoi spiegare come iterare usando '>>>'? – K48
@ K48 Non penso che intendesse * iterare *, penso che intendesse dire che questa lunghezza delle forze è diventata un numero. (Altrimenti, sono ugualmente confuso.) Ma ecco una grande risposta che chiarisce di più: https://stackoverflow.com/questions/1822350/what-is-the-javascript-operator-and-how-do-you-use- esso –
Questo è un operatore di spostamento a destra, ma perché dovresti spostare a zero? È una specie di modo economico di fare 'parseInt'? –
'>>>' imposta sempre il bit del segno su zero, anche se si cambia per zero bit. –
Controlla questa risposta su * perché * essi usano in questo caso l'operatore '>>>': http://stackoverflow.com/questions/3081987/what-good-does-zero-fill-bit-shifting-by-0 -do-a-0/3082073 # 3082073 – CMS