在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
这个运营商是什么以及它的作用是什么?
答案 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