私は別のStackOverflowの投稿でこの構文を見て、それが何をするのか興味がありました:
var len = this.length >>> 0;
どういう>>>意味ですか?
>>>ゼロビットだけシフトした場合でも、常に符号ビットをゼロに設定します。
>>>演算子を:stackoverflow.com/questions/3081987/...
var length = list.length >>> 0; (あなたのものと同じユースケース)
回答:
これは符号なしの右シフト演算子です。興味深いことに、JavaScriptで符号なしのビット演算子はこれだけです。
>>>演算子は、expression1のビットをexpression2で指定されたビット数だけ右にシフトします。左からゼロが入力されます。右にシフトされた数字は破棄されます。
その意図された意味を無視すると、これはおそらくそれが使用されているのを見る場所です:
>>> 0 は、任意の型を正の整数に変換する唯一の演算子であるという点で独特です。
"string" >>> 0 == 0
(function() { }) >>> 0 == 0
[1, 2, 3] >>> 0 == 0
Math.PI >>> 0 == 3
あなたの例ではvar len = this.length >>> 0、これは、thisタイプthis.lengthが何であれ、反復処理に使用する整数の長さを取得する方法です。
同様に、~~x任意の変数を符号付き整数に変換するために使用できます。
>>>はビット単位の演算子で、右シフトをゼロで埋めます。
>>> 0正の数に対する唯一の影響は、と同じように、最も近い整数に切り捨てることだと思いますMath.floor()。一般に.lengthプロパティ(例:のArray)はすでに整数であるため、これがあなたの例で必要になる理由はわかりません。
~~同じように使用されるわずかに短いものも見ました:~~9.5 == 9; // true。
Math.abs()負の数に使用した場合と同じではないかと思います。
>>> 0、それは2の補数に変換し、負の数に、右シフトはありません。したがって-14 >>> 0 == 1073741820。(msdn.microsoft.com/en-us/library/342xfs5s%28v=vs.94%29.aspx)
parseIntですか?