返回功能 - 没有记录到控制台

时间:2015-03-05 04:01:51

标签: javascript functional-programming higher-order-functions

我无法看到我在写这篇文章时遇到的错误' transformArray'功能。我试图让它作为一个参数的函数,将它应用于某个数组的每个元素。为什么不返回任何东西?

var array1 = [1,2,3,4,5];
function transformArray (aFunction) {
    return function (array) {
        return array.forEach(aFunction);
    };
}
var halve = transformArray(function (num) {return num/2;});
console.log(halve(array1));

1 个答案:

答案 0 :(得分:3)

那是因为Array.forEach是一个迭代器。它总是返回undefined

  

MDN: forEach()为每个数组元素执行一次回调函数;   与every()some()不同,始终返回值undefined

您需要的是Array.map

  

map()方法使用调用a的结果创建新数组   为此数组中的每个元素提供了函数。

function transformArray (aFunction) {
    return function(array) {
        return array.map(aFunction);
    };
}

(强调我的)