Javascript 什么';s array.length>&燃气轮机&燃气轮机;0; 用来做什么?

Javascript 什么';s array.length>&燃气轮机&燃气轮机;0; 用来做什么?,javascript,Javascript,可能的重复项: 1. 2. 我在翻阅一些MooTools代码,注意到每个数组方法都使用了这个片段: var length = this.length >>> 0; 这样做有什么好处?在我看来,它不像是一些最大长度的东西,因为3247823748372>>0==828472596和3247823748373>>0==828472597(因此,两者都比最大长度高1,如果是对于最大长度,那么做var length=Math.min(this.length,max_lengt

可能的重复项:
1.
2.

我在翻阅一些MooTools代码,注意到每个数组方法都使用了这个片段:

var length = this.length >>> 0;

这样做有什么好处?在我看来,它不像是一些最大长度的东西,因为
3247823748372>>0==828472596
3247823748373>>0==828472597
(因此,两者都比最大长度高1,如果是对于最大长度,那么做
var length=Math.min(this.length,max_length)
?).

是按位的

JavaScript数字可以表示整数和浮点数。有时您只需要一个整数。表示小于2^32的数字的任何正JavaScript数字都将向下舍入(截断,如
Math.floor
)到最接近的整数。数字≥ 2^32变为0。小于0的数字将变成正值(多亏了2的补码表示法的魔力)


但是,
this.length
可能总是一个小于2^32的整数……所以我无法解释为什么代码会这样做。结果应该与此相同。长度

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


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

这并没有说明“用于”的含义,但是,将0位移位实际上并没有多大作用。例如,任何浮点数都是“cut”。此外,它还隐式地将该值转换为int32值。即使是“非法”字符串也会被强制转换为
0
@jAndy,
>0
转换为
UInt32
,而
Int32
是有符号整数(可以使用
|0
转换为)
0xFFFFFF | 0
=
-1
0xFFFFFFFF>>0
=
4294967295
请看:啊,我想知道为什么我找不到任何东西,但显然搜索引擎不“识别”。。。谢谢你的链接,这解释了很多^^,@Reanimation:但是你是在问这种方法与其他方法相比的原因/好处吗?那个复制品似乎没有回答你问题的那一部分。我结束了这个问题,因为它问的问题和复制品的问题是一样的。但是,如果您想知道为什么要在整数上使用它(在这种情况下,
>0
似乎没有多大意义),请随意编辑这个问题,我会重新打开它。@RightSaidFred:事实上,第二个答案演示了如何将其转换为正32位int,这似乎是一个逻辑上的事情,要做到万无一失,一些傻瓜可能会将其设置为“10k”;)