答案 0 :(得分:100)
忽略其预期含义,这很可能是您将使用它的地方:
>>> 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
可用于将任何变量转换为有符号整数。
答案 1 :(得分:47)
那是unsigned right shift operator。有趣的是,它是JavaScript中唯一的{{3>} 未签名。
>>>运算符将expression1的位右移数 expression2中指定的位。从左边填充零。 从右侧偏移的数字将被丢弃。
答案 2 :(得分:8)
该运营商是合乎逻辑的右移。这里数字移位0位。数学上零位的移位应该没有效果。
但是在这里它用于将值转换为无符号的32位整数。
答案 3 :(得分:3)
>>>
是一个逐位运算符zero-fill right shift。
我认为>>> 0
对正数的唯一影响是向下舍入到最接近的整数,与Math.floor()
相同。我不明白为什么在你的例子中这是必要的,因为.length
属性(例如Array
)通常已经是整数。
我也看到了以相同方式使用的略短~~
:~~9.5 == 9; // true
。