忽略其本意,最有可能看到它使用的地方是:
>>> 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
可以用来将任何变量转换为有符号整数。>>>
进行迭代吗? - user6269864>>>
是一个位运算符,它执行的是零填充右移操作。>>> 0
的唯一效果是向下取整到最接近的整数,与Math.floor()
相同。我不明白为什么在您的示例中需要这样做,因为通常一个.length
属性(例如一个Array
)已经是一个整数了。~~
以同样的方式使用:~~9.5 == 9; // true
。Math.abs()
不同。 - Al Kepp>>> 0
操作,它会被转换为二进制补码后再进行右移操作。因此,-14 >>> 0
的结果是 1073741820
。(来源:http://msdn.microsoft.com/en-us/library/342xfs5s%28v=vs.94%29.aspx) - gen_Eric
parseInt
的方式吗? - gen_Eric>>>
运算符的答案:http://stackoverflow.com/questions/3081987/what-good-does-zero-fill-bit-shifting-by-0-do-a-0/3082073#3082073 - Christian C. Salvadóvar length = list.length >>> 0;
(与您的用例相同) - Mars Robertson