什么是>>>运营商?

时间:2013-08-08 08:55:52

标签: javascript operators

在Mozilla网站的filter文档页面中,我看到>>>运营商:

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

这个运营商是什么以及它的作用是什么?

3 个答案:

答案 0 :(得分:3)

这是一个移位操作员。

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

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

但这并没有解释为什么有人会费心将值零位向右移动。你也可以将它乘以1,或加零。

答案 1 :(得分:2)

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

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

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

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

所有移位运算符所做的是将值转换为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

答案 2 :(得分: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