我在另一个StackOverflow帖子上看到了这种语法,并对它的作用感到好奇:
var len = this.length >>> 0;
这>>>意味着什么?
>>>即使您将位移位零,也始终将符号位设置为零。
>>>运营商:stackoverflow.com/questions/3081987/...
var length = list.length >>> 0; (与您的用例相同)
Answers:
忽略其预期的含义,很可能会在其中看到它的使用位置:
>>> 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可用于将任何变量转换为有符号整数。
>>>是按位运算符,零填充右移。
我认为>>> 0对正数的唯一作用是向下舍入到最接近的整数,与相同Math.floor()。我不明白为什么在您的示例中这是必需的,因为通常.length属性(例如的属性Array)已经是整数。
我还看到了~~以相同方式使用的稍短一些:~~9.5 == 9; // true。
Math.abs()负数相同。
>>> 0对负数进行运算,则会将其转换为2的补数,然后进行右移。因此-14 >>> 0 == 1073741820。(msdn.microsoft.com/en-us/library/342xfs5s%28v=vs.94%29.aspx)
parseInt吗?