【问题标题】:Question about passing a JavaScript method关于传递 JavaScript 方法的问题
【发布时间】:2021-04-25 17:46:27
【问题描述】:

我有一个关于以下 JavaScript 代码的快速问题:

<script>
var numbers1 = [56, 234, 6, 5, 63, 265] ; 
var sum = numbers1.reduce(myFunction) ; 

document.getElementById("demo1").innerHTML = "The sum is " + sum ; 

function myFunction(total, value){
return total + value ; 
}
</script>`

我不知道为什么这段代码会生成数组中所有元素的总和,因为我们只是将 myFunction() 的定义传递给 reduce(),而没有指定变量“total”和“value”中的内容。 另外,这些变量分别是什么?

非常感谢您提前提供的帮助!

【问题讨论】:

  • 因为.reduce 对数组的每个元素执行myFunction 并重用之前调用的结果(在total 参数中)

标签: javascript methods


【解决方案1】:

默认情况下,使用回调函数调用reduce() 会将这两个变量(众所周知的累加器和当前值)传递给回调函数。这里就是这种情况:myFunction 在每次迭代中获取累加器和当前值。即使你在myFunction中连续嵌套了几个函数,结果也是一样的:

var numbers1 = [56, 234, 6, 5, 63, 265];
var sum = numbers1.reduce(myFunction);

document.getElementById("demo1").innerHTML = "The sum is " + sum;

function myFunction(total, value) {
  return myMiddleFunction(total, value);
}

function myMiddleFunction(total2, value2) {
  return myInnerFunction(total2, value2);
}

function myInnerFunction(total3, value3) {
  return total3 + value3
}
&lt;p id="demo1"&gt;&lt;/p&gt;

【讨论】:

  • 这是一个很好的答案,有详细的解释。我会编辑它并删除整个嵌套部分 - 它增加了不必要的复杂性。
  • 感谢您提供示例代码和解释。非常感谢您的帮助:)
  • 顺便说一句,有没有学习资料或资源可以让我学习到你可以推荐的这种详细程度?
  • 我认为 MDN 拥有您所需要的一切。他们的文档很有启发性。
  • @GuyLevinger OP 询问累加器和当前值从哪里获取它们的值。嵌套部分有助于清除这一点。
猜你喜欢
  • 1970-01-01
  • 2011-06-16
  • 2013-07-10
  • 2014-08-14
  • 2020-08-15
  • 2011-01-22
  • 2016-04-23
  • 2010-12-19
  • 1970-01-01
相关资源
最近更新 更多