javascript:传递函数

Jen*_*nny 6 javascript

我正在学习javascript.我知道在定义函数后我们可以将函数传递给其他函数.但是我需要帮助才能理解这个例子:

function map(func, array) {
  var result = [];
  forEach(array, function (element) {
    result.push(func(element));
  });
  return result;
}
Run Code Online (Sandbox Code Playgroud)

根据我的理解,func是map的参数.我需要提供一个函数作为func.但是在我正在阅读的教程中,它没有提到这个函数的来源,似乎没有必要指定这个参数?本教程中的另一个例子是相同的:

 function count(test, array) {
  return reduce(function(total, element) {
    return total + (test(element) ? 1 : 0);
  }, 0, array);
}
Run Code Online (Sandbox Code Playgroud)

此测试函数等于元素=== 0?1:0,但教程没有说我需要写下测试功能.我需要编写这个测试功能吗?

小智 4

编辑:在您发布的教程的链接中,传递的函数是预定义的函数Math.round。我下面的示例显示了创建您自己的函数来传递。


map示例显示了实现。当您调用 时,您将提供该函数(和数组)map

从表面上看,将map数组中的当前项传递给您的函数,您的函数应该对其执行某些操作并返回结果。函数返回的结果将添加到新数组中。

var arr = [1,2,3,4,5];
var my_func = function(item) { return item * 2; };

var new_arr = map(my_func, arr);

console.log(new_arr); // [2,4,6,8,10]
Run Code Online (Sandbox Code Playgroud)
  1. 我们创建了一个数组( arr)

  2. 我们创建了一个函数( my_func),它接受给定的任何内容,并将其乘以 2。

  3. 我们将两者都传递给map

  4. map函数迭代 our arr,将每次迭代中的当前项传递给我们的函数。

  5. 我们的函数获取当前项,并返回它乘以 2 的结果。

  6. map函数获取该结果,并将其添加到新数组中。

  7. 当迭代完成时,map函数返回新的数组。