什么是“>>>” JS中的运算符?

时间:2012-04-30 10:26:41

标签: javascript arrays iterator operators

  

可能重复:
  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;
  };
}

2 个答案:

答案 0 :(得分:33)

>>>是右移,没有符号扩展名

如果对负数使用>>运算符,结果也将为负数,因为原始符号位被复制到所有新位中。使用>>>时,将复制零。

在这种特殊情况下,它只是用作将length字段限制为无符号31位整数的方法,换句话说是将Javascript的本机IEEE754“双”数字“转换”为整数。< / p>

答案 1 :(得分:4)

这是一个零填充右移。当您对一个数字进行位移时,您可以决定用零填充最左边的位或使用符号位。

在二进制补码表示中,负数的前导位为1,而正数为0.因此,如果不进行“符号扩展”(用零填充)并移动负数,则结果为正数。