4

filterMozilla 网站的文档页面中,我看到了>>>操作员:

var t = Object(this),
     len = t.length >>> 0, //here
     res, thisp, i, val;
if (typeof fun !== 'function') {
    throw new TypeError();
}

在这里您可以找到完整的文档:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

这个运算符是什么,它的作用是什么?

4

3 回答 3

3

这是一个位移运算符。

来自https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators

a >>> b将二进制表示中的 a 右移 b 位,丢弃移出的位,并从左移零。

不过,这并不能解释为什么有人会费心将零值向右移动。您不妨将其乘以一,或加零。

于 2013-08-08T09:03:10.337 回答
2

正如其他人解释的那样,它是“零位移位”运算符。

对于正值,这与普通>>运算符具有相同的效果。对于负值,最高有效位是“符号”位。正常移位会将符号位移入(1 表示负值,0 表示正值)。>>>有不同的效果,因为它总是移入零而不是符号位:

-2>>1 == -1
-2>>>1 == 2147483647

有关如何表示负值的更多信息,请参见此处

所有移位运算符所做的是将值转换为 32 位整数(至少我的 Firefox 是这样),因此移位0意味着该值将始终在 32 位范围内。按位移位0也将确保该值为正:

a = Math.pow(2,32)       // overflow in 32-bit integer
a>>0 == 0
b = Math.pow(2,32) - 1   // max 32-bit integer: -1 when signed, 4294967295 when unsigned
b>>0 == -1
b>>>0 == 4294967295      // equal to Math.pow(2,32)-1
于 2013-08-08T09:09:39.773 回答
0

用零运算符调用按位右移。该运算符与 >> 运算符一样,只是左移的位始终为零。

例如:(A >>> 1) 是 1。

http://www.tutorialspoint.com/javascript/javascript_operators.htm

更新: 这解释了按位移位运算符的作用:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators#Bitwise_shift_operators

于 2013-08-08T09:00:47.940 回答