有关Mozilla的Array.prototype.indexOf中的代码的问题

时间:2009-09-25 00:18:00

标签: javascript

这是Mozilla的Code.prototype.indexOf中的Mozilla代码

if (!Array.prototype.indexOf)
{
  Array.prototype.indexOf = function(elt)
  {
    var len = this.length >>> 0; // What does ">>>" do?

    var from = Number(arguments[1]) || 0;
    from = (from < 0) ? Math.ceil(from): Math.floor(from); 
    if (from < 0)from += len;

    for (; from < len; from++)
    {
      if (from in this && this[from] === elt)return from;
    }
    return -1;
  };
}

我不明白一些语法 “&gt;&gt;&gt;”是什么在上面的代码中做什么?

4 个答案:

答案 0 :(得分:6)

这是一个无符号的右移 - 它们基本上是一种转换为有效数组索引的快速方法。

答案 1 :(得分:1)

我认为这是一个无符号右移操作符

答案 2 :(得分:1)

这是一个无符号的右移,正如这里指出的那样:http://www.c-point.com/javascript_tutorial/jsoprurshift.htm,但它应该移动第二个数字中的位数(在&gt;&gt;&gt;的右边)。

答案 3 :(得分:0)

另见Why use /*, */ around arguments and why use >>> when extracting the length of an array?

“&gt;&gt;&gt;是无符号右移。此处用于将潜在签名的数字长度转换为无符号数字。”