首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解Array.prototype.map

理解Array.prototype.map
EN

Stack Overflow用户
提问于 2016-11-15 15:28:33
回答 1查看 141关注 0票数 0

我正在研究Javascript映射函数,并坚持循环语法。很难找出放在逗号之后的o。有人能帮我弄清楚吗。另外,循环的终止条件是什么?

代码语言:javascript
复制
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;
};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-15 15:39:31

代码语言:javascript
复制
for (var i = 0, o; o = obj[i]; i++) {
    obj[i] = callback(o);
}

这与以下情况相同:

代码语言:javascript
复制
var i = 0,
    o;

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

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

实际上,这个循环实现有一个bug:每当任何数组值都是falsey时,它就终止;这可能是不需要的。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40613679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档