回调函数的正确实现是什么?

时间:2017-08-03 11:43:56

标签: callback higher-order-functions

请参阅以下两个功能。它们导致相同的输出[4,6],但在设置上有所不同。仅第一个函数使用回调函数是否正确?第一个功能是首选(更优雅吗?)而不是另一个? ' map'是否正确?是第二个例子中的高阶函数,因为它使用了括号内的回调函数? 谢谢!

function processArray(arr,callback){
return arr.map(callback)
}

processArray([2,3], function(number){return number*2})

function processArray(arr){
return arr.map(function(element){
return otherFunction(element)})
}

function otherFunction(number){
return number*2}

processArray([2,3])

1 个答案:

答案 0 :(得分:1)

  

只有第一个函数使用回调函数是否正确?

没有。 arr.map进行回调。你在这里看不到它的定义。

  

第一个功能是首选(更优雅吗?)而不是另一个?

是的,但(可能)不是你想的原因。包装otherFunction的匿名函数是没有意义的。你也可以写

function processArray(arr){
  return arr.map(otherFunction)
}

function otherFunction(number){
  return number*2
}

processArray([2,3])
  

' map'是否正确?是第二个例子中的高阶函数,因为它使用了括号内的回调函数?

在第一个示例中,processArraymap都是高阶函数。在第二个中,是的,只有map是高阶的。

检查一个函数以查看它是否是一个高阶函数很容易:是否调用了一个(或多个)参数?