什么是array.length>>> 0;用于?

时间:2011-11-27 16:12:17

标签: javascript

  

可能重复:
  1. What good does zero-fill bit-shifting by 0 do? (a >>> 0)
  2. JavaScript triple greater than

我正在挖掘一些MooTools代码,并注意到在每个数组方法中都使用了这个代码段:

var length = this.length >>> 0;

这样做有什么好处?在我看来,它不像是3247823748372 >>> 0 === 8284725963247823748373 >>> 0 === 828472597这样的最长篇幅(因此,两者都高1,如果是maxLength则不会更好地做{ {1}}?)。

2 个答案:

答案 0 :(得分:3)

这似乎是确保长度为非负(32位)整数的最安全方式。

另一个例子,说明JavaScript缺少适当的标准函数,这次是将未知类型保存转换为32位无符号整数。

答案 1 :(得分:1)

>>>是按位"zero-fill right shift" operator

JavaScript数字可以表示整数和浮点数。有时你只想要一个整数。表示小于2 ^ 32的数字的任何正数JavaScript数将向下舍入(截断,如Math.floor中)到最接近的整数。数字≥2^ 32变为0.小于0的数字将变为正值(由于二进制补码表示的魔力)。

然而,this.length可能总是小于2 ^ 32的整数......所以我无法解释为什么代码会这样做。结果应与this.length相同。