JS中的高阶函数

时间:2016-02-27 16:59:41

标签: javascript higher-order-functions

我正在学习JavaScript。我有一些问题。以下代码来自Eloquent JavaScript:

function forEach(array, action) {
    for (var i = 0; i < array.length; i++)
        action(array[i]);
}

var numbers = [1, 2, 3, 4, 5],
    sum = 0;

forEach(numbers, function(number) {
    sum += number;
});

console.log(sum); 

此代码中发生了什么?当调用forEach函数时,它如何确定数字是多少?它是如何从数字数组中提取数字的?

1 个答案:

答案 0 :(得分:5)

  

此代码中发生了什么?

以下是您的forEach功能如何运作的说明:

  1. 您的forEach函数接受两个参数,即数组和函数
  2. 它设置一个for循环来遍历数组
  3. 然后,对于数组中的每个元素,它调用action(array[i])调用传入函数并将其传递给一个数组元素。 array[i]从数组中获取下一个项目,action(array[i])调用传入的函数并将其传递给数组中的下一项。
  4. 然后,当你这样称呼时:

    forEach(numbers, function(number) {
        sum += number;
    });
    

    它会调用你为{​​{1}}数组中的每个数字传递一次的函数,当它调用该函数时,它会从数组中传递一个数字作为函数的第一个参数。

    让一些人感到困惑的一件事是你传递给numbers的函数中的number参数只是你赋给函数第一个参数的名字。它可以命名为您想要的任何名称,与forEach函数定义中使用的任何名称无关。函数参数的声明只是分配给每个参数的标签,使您更容易使用它们。你也可以这样做:

    forEach()
      

    forEach函数在被调用时如何确定它是什么   号码?

    您的forEach(numbers, function(whateverYouWant) { sum += whateverYouWant; }); 循环一次遍历整个数组一个数字,并为数组中的每个数字调用一次回调函数。

      

    如何从数字数组中提取数字?

    for是从数组中提取数字的位置。这是正常的数组索引,用于从array[i]i变化到数组长度减去1的数组中检索第i个值。