Javascript JS中的高阶函数

Javascript JS中的高阶函数,javascript,higher-order-functions,Javascript,Higher Order Functions,我现在正在学习JavaScript。我有一些问题。以下代码摘自《雄辩的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 +=

我现在正在学习JavaScript。我有一些问题。以下代码摘自《雄辩的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(数组、动作){
对于(var i=0;i
这段代码中发生了什么?调用forEach函数时,如何确定数字?它如何从数字数组中提取数字

这段代码中发生了什么

下面是对您的
forEach
函数工作原理的描述:

  • 您的
    forEach
    函数接受两个参数,数组和函数
  • 它为循环设置一个
    ,以迭代数组
  • 然后,对于数组中的每个元素,它调用
    操作(array[i])
    ,该操作调用传入函数并向其传递一个数组元素
    array[i]
    从数组中获取下一项,并
    action(array[i])
    调用传入函数并将其从数组中传递给下一项
  • 然后,当你这样称呼它:

    forEach(numbers, function(number) {
        sum += number;
    });
    
    它将为
    numbers
    数组中的每个数字调用您传递的函数一次,当它调用该函数时,它将数组中的一个数字作为第一个参数传递给您的函数

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

    forEach(numbers, function(whateverYouWant) {
        sum += whateverYouWant;
    });
    
    调用forEach函数时,如何确定 号码

    您的
    for
    循环一次遍历整个数组中的一个数字,并为数组中的每个数字调用回调函数一次

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

    array[i]
    是从数组中提取数字的位置。这是从数组中检索第i个值的常规数组索引,其中
    i
    0
    到数组长度减1不等

    这段代码中发生了什么

    下面是对您的
    forEach
    函数工作原理的描述:

  • 您的
    forEach
    函数接受两个参数,数组和函数
  • 它为循环设置一个
    ,以迭代数组
  • 然后,对于数组中的每个元素,它调用
    操作(array[i])
    ,该操作调用传入函数并向其传递一个数组元素
    array[i]
    从数组中获取下一项,并
    action(array[i])
    调用传入函数并将其从数组中传递给下一项
  • 然后,当你这样称呼它:

    forEach(numbers, function(number) {
        sum += number;
    });
    
    它将为
    numbers
    数组中的每个数字调用您传递的函数一次,当它调用该函数时,它将数组中的一个数字作为第一个参数传递给您的函数

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

    forEach(numbers, function(whateverYouWant) {
        sum += whateverYouWant;
    });
    
    调用forEach函数时,如何确定 号码

    您的
    for
    循环一次遍历整个数组中的一个数字,并为数组中的每个数字调用回调函数一次

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


    array[i]
    是从数组中提取数字的位置。这是从数组中检索第i个值的常规数组索引,其中
    i
    0
    到数组长度减1不等。

    就在这里:
    操作(数组[i])-调用从数组传递元素的操作。它就在这里:
    操作(数组[i])-调用从数组传递元素的操作。@K-Kropchatov-这是否回答了您的问题?如果是,请通过单击答案左侧的绿色复选标记向社区指出。如果没有,那么请解释你还需要什么帮助。@K-Kropchatov-这回答了你的问题吗?如果是,请通过单击答案左侧的绿色复选标记向社区指出。如果没有,请解释你还需要什么帮助。