可能重复:
javascript >>> operator?
JavaScript triple greater than
在这样的代码行中找到了这个运算符:
var t = Object(this),
len = t.length >>> 0;
这个算子是什么意思?
完整代码如下。它是JS some
方法的代码:
if (!Array.prototype.some) {
Array.prototype.some = function(fun /*, thisp */) {
"use strict";
if (this == null) throw new TypeError();
var t = Object(this),
len = t.length >>> 0;
if (typeof fun != "function") throw new TypeError();
var thisp = arguments[1];
for (var i = 0; i < len; i++) {
if (i in t && fun.call(thisp, t[i], i, t))
return true;
}
return false;
};
}
答案 0 :(得分:33)
>>>
是右移,没有符号扩展名
如果对负数使用>>
运算符,结果也将为负数,因为原始符号位被复制到所有新位中。使用>>>
时,将复制零。
在这种特殊情况下,它只是用作将length
字段限制为无符号31位整数的方法,换句话说是将Javascript的本机IEEE754“双”数字“转换”为整数。< / p>
答案 1 :(得分:4)
这是一个零填充右移。当您对一个数字进行位移时,您可以决定用零填充最左边的位或使用符号位。
在二进制补码表示中,负数的前导位为1,而正数为0.因此,如果不进行“符号扩展”(用零填充)并移动负数,则结果为正数。