0

我正在浏览 Javascript map 函数,并停留在循环语法上。很难弄清楚逗号后面的o。谁能帮我弄清楚。另外循环的终止条件是什么?

Array.prototype.mymap = function (callback) {
  var obj = Object(this);

  if (obj.length === 0) return null;
  if (typeof(callback) === 'undefined') return null;

  for (var i = 0, o; o = obj[i]; i++) {
    obj[i] = callback(o);
  }

  return obj;
};
4

1 回答 1

6
for (var i = 0, o; o = obj[i]; i++) {
    obj[i] = callback(o);
}

这与以下内容相同:

var i = 0,
    o;

while (o = obj[i]) {
    ...
    i++;
}

o这意味着,它声明了最初设置为的变量undefined。在每次循环迭代期间,obj[i]分配给o。当obj[i]导致undefined(因为i超出数组的长度)时,表达式o = obj[i]会导致undefined,这将终止循环。

实际上,这个循环实现有一个错误:只要任何数组值为falsey ,它就会终止;这可能是不希望的。

于 2016-11-15T15:39:31.093 回答