Ich habe diese Syntax in einem anderen StackOverflow-Beitrag gesehen und war gespannt, was sie bewirkt:
var len = this.length >>> 0;
Was bedeutet >>>
das?
javascript
Jey Balachandran
quelle
quelle
parseInt
?>>>
setzt das Vorzeichenbit immer auf Null, auch wenn Sie um Nullbits verschieben.>>>
Operator verwenden: stackoverflow.com/questions/3081987/…var length = list.length >>> 0;
(der gleiche Anwendungsfall wie Ihr) gesehenAntworten:
Das ist ein nicht signierter Rechtsschichtfahrer . Interessanterweise ist es der einzige bitweise Operator , der in JavaScript nicht signiert ist .
quelle
Wenn Sie die beabsichtigte Bedeutung ignorieren, werden Sie höchstwahrscheinlich feststellen, dass sie verwendet wird:
>>> 0
ist insofern einzigartig, als es der einzige Operator ist, der einen Typ in eine positive Ganzzahl konvertiert:In Ihrem Beispiel ist
var len = this.length >>> 0
dies eine Möglichkeit, eine Ganzzahllänge zu erhalten, die zum Iterieren verwendet werden kannthis
, unabhängig vom Typthis.length
.In ähnlicher Weise
~~x
kann jede Variable in eine vorzeichenbehaftete Ganzzahl konvertiert werden.quelle
>>>
?Dieser Operator ist eine logische Rechtsverschiebung. Hier wird die Zahl um 0 Bits verschoben. Eine mathematische Verschiebung von Nullbits sollte keine Auswirkung haben.
Hier wird es jedoch verwendet, um den Wert in eine vorzeichenlose 32-Bit-Ganzzahl umzuwandeln.
quelle
>>>
ist ein bitweiser Operator mit Null-Rechts-Verschiebung .Ich denke, die einzige Auswirkung
>>> 0
einer positiven Zahl besteht darin, auf die nächste ganze Zahl abzurunden, genau wieMath.floor()
. Ich verstehe nicht, warum dies in Ihrem Beispiel notwendig wäre, da eine.length
Eigenschaft (z. B. vonArray
) im Allgemeinen bereits eine Ganzzahl ist.Ich habe auch gesehen, dass die etwas kürzere
~~
auf die gleiche Weise verwendet wird :~~9.5 == 9; // true
.quelle
Math.abs()
bei negativen Zahlen.>>> 0
eine negative Zahl verwenden, wird diese in das Kompliment von 2 umgewandelt, und dann wird die richtige Verschiebung vorgenommen. Deshalb-14 >>> 0 == 1073741820
. ( msdn.microsoft.com/en-us/library/342xfs5s%28v=vs.94%29.aspx )