javascript数组foreach函数需要解释

时间:2014-06-23 18:44:51

标签: javascript function arguments

我对Array.prototype.forEach函数参数有些困惑,特别是“ thisp ”(第二个参数)。

下面是原始函数,我在document.write里面添加了以检​​查:

Array.prototype.forEach=function(res , thisp)
{
  var len = this.length;
  if (typeof res != "function")
    throw new TypeError();

  //var thisp = arguments[1];
  document.write("cekkk<br/>");
  for (var i = 0; i < len; i++)
  {
    if (i in this)
        document.write(thisp+", "+this[i]+", "+i+"<br/>");
      res.call(thisp, this[i], i, this);
  }
};

结果是:

cekkk
undefined, 4, 0
undefined, 1, 1
undefined, 3, 2
undefined, 5, 3
undefined, 6, 4

如果我删除thisp参数,如下所示:

Array.prototype.forEach=function(res)
{
  var len = this.length;
  if (typeof res != "function")
    throw new TypeError();

  //var thisp = arguments[1];
  document.write("cekkk<br/>");
  for (var i = 0; i < len; i++)
  {
    if (i in this)
        document.write(this[i]+", "+i+"<br/>");
      res.call(this[i], i, this);
  }
};

结果是:

cekkk
4, 0
1, 1
3, 2
5, 3
6, 4

我的数组是[4,1,3,5,6]

有人在解释函数的参数是什么用的? thisp的数据类型是什么以及为什么thisp未定义?

非常感谢。

0 个答案:

没有答案