繁体   English   中英

JS中的高阶函数

[英]Higher-Order Functions in JS

我正在学习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函数时,如何确定数字是多少? 它如何从数字数组中提取数字?

这段代码中发生了什么?

这是您的forEach函数工作方式的描述:

  1. 您的forEach函数接受两个参数,即数组和函数
  2. 它设置了一个for循环来遍历数组
  3. 然后,对于数组中的每个元素,它将调用action(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的长度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM