【问题标题】:How can an argument increment without being explicitly told to do so?一个论点如何在没有被明确告知的情况下增加呢?
【发布时间】:2017-08-01 12:13:29
【问题描述】:

在下面function为什么“i”参数increment

function colWidths(rows) {
      return rows[0].map(function(_, i) {
        return rows.reduce(function(max, row) {
          return Math.max(max, row[i].minWidth());
        }, 0);
      });
    }

【问题讨论】:

  • 因为map 将其传递给回调函数并可以将其设为任何想要的值...!?

标签: javascript function higher-order-functions


【解决方案1】:

传递给 map 的函数只是用不同的 i 值调用。你可以编写自己的simplified 版本的 map 函数,如下所示:

function map(arr, callback){
  let newArr = []
  for(let i = 0; i < arr.length; i++){
    newArr.push(callback(arr[i], i));
  }
  return newArr;
}

mapped = map(["Zero", "One", "Two"], function(el, i){ return i });
console.log(mapped)

【讨论】:

  • 那是forEach,不是map
  • 糟糕。更新。谢谢。
  • 如果我可以补充一个额外的问题:当未显式传递时,如何识别属于位于另一个函数中的函数的参数的值?例如。你怎么知道“i”是回调函数。
  • 你说的是你写Math.max(max, row[i].minWidth());的地方吗?它不是传递,而是调用一个函数会创建一个范围,并且该函数内的任何代码都可以访问该范围内的变量。这是一篇关于范围的非常激烈的文章,我相信它会有你正在寻找的答案:toddmotto.com/…
  • 这应该发布为 cmets not answer。
猜你喜欢
  • 2018-07-30
  • 2022-08-21
  • 2015-01-24
  • 1970-01-01
  • 2021-05-01
  • 2018-04-19
  • 1970-01-01
  • 1970-01-01
  • 2022-01-16
相关资源
最近更新 更多