JavaScript的高阶函数如何解释回调函数参数?

时间:2017-05-19 01:58:05

标签: javascript parameters callback higher-order-functions

我一直在使用高阶函数并取得了一些成功,但我对回调参数的工作方式感到有些困惑。例如,Reduce有一些参数(accumulator,currentValue等)。命名似乎并不重要。如果需要,我可以用'acc'替换累加器的使用,或者用完全不同的单词替换它。这使我相信按照给出的顺序减少解释参数。这是对的吗?

如果是这样,我如何表明我只需要在列表中稍后使用参数?假设我只打算使用currentIndex。我是否需要在currentIndex(accumulator和currentValue)之前输入两个参数值,即使我没有使用它们?

1 个答案:

答案 0 :(得分:1)

  

这让我相信按顺序减少解释参数   他们得到了。这是对的吗?

是的,参数的顺序是重要的,命名并不重要,除了名称可能有助于您更好地确定参数的目的。

  

如果是这样,我如何表明我以后只需要使用参数   列表?让我们说我只打算使用currentIndex。我需要吗?   在currentIndex(累加器)之前输入两个参数值   和currentValue)即使我没有使用它们?

是的,您需要输入所有参数名称"到达"你想要的参数。

你不一定要使用这些参数。例如:

function hello () {
  return "hi"
}

console.log([1, 2, 3, 4].reduce(hello))   // prints "hi"

愚蠢的例子,但我想表明我实际上并没有使用任何reduce函数参数,只是返回我想要的任何内容。这仍然有效,但显然违背了使用reduce函数的目的。

感谢@ andrew-li,如果你根本不打算使用给定的参数,请将变量命名为容易确定它是未使用变量的变量:

function hello (dummy1, dummy2, cidx) {
  return cidx
}

console.log([1, 2, 3, 4].reduce(hello))   // 4