为什么在提取数组的长度时使用/*,*/around参数以及为什么要使用>>>?

Egi*_*sen 6 javascript

我在developer.mozilla.org网站的indexOf页面上查看了javascript参考手册,并注意到indexOf的实现代码中的一些内容,希望有人能向我解释.

为了节省每个人到mozilla网站的往返,这里是整个功能:

if (!Array.prototype.indexOf)
{
  Array.prototype.indexOf = function(elt /*, from*/)
  {
    var len = this.length >>> 0;

    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;
  };
}
Run Code Online (Sandbox Code Playgroud)

我不明白的是/*, from*/函数声明中的,以及>>>提取数组长度(var len = this.length >>> 0;)的零填充右移.

pjp*_*pjp 10

/*, from */是一个注释掉的参数.但是,它似乎已留在注释中,以显示可以选择为该函数指定此参数.

var from = Number(arguments[1]) || 0;
Run Code Online (Sandbox Code Playgroud)

我相信如果传入,这arguments[1]将是from价值.

arguments数组对于可以使用可变数量的参数调用的函数特别有用,或者使用比正式声明接受的参数多的参数.http://www.devguru.com/Technologies/Ecmascript/Quickref/arguments.html

>>>是一个无符号的右移.它在这里用于将可能签名的数字length转换为无符号数字.

从Web开发人员的专业JavaScript中提取

http://www.c-point.com/javascript_tutorial/jsoprurshift.htm