JavaScript三倍大于

时间:2011-10-10 21:08:51

标签: javascript

我在另一个StackOverflow post上看到了这种语法,并对它的作用感到好奇:

var len = this.length >>> 0;

>>>意味着什么?

4 个答案:

答案 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