我在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转换为无符号数字.
http://www.c-point.com/javascript_tutorial/jsoprurshift.htm
| 归档时间: |
|
| 查看次数: |
577 次 |
| 最近记录: |