gpt4 book ai didi

javascript - 一个函数如何传递给另一个函数?

转载 作者:行者123 更新时间:2023-12-02 16:55:15 25 4
gpt4 key购买 nike

我定义了一个 forEach 函数来对数组中的所有项目执行“某些操作”:

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, console.log);

它会打印出所有数字,因为 'console.log(array[i])' 将数字打印到控制台。我明白那部分了。

这就是我陷入困境的地方:如果我将下面的函数传递到操作参数的位置,而不是“console.log”,那么该函数在什么时候知道每个元素?

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

console.log(sum);
// 15

如何评估?如果我将 console.log 传递到最后一个问题,并且仍然必须将其评估为“console.log(array[i])”,并在传入的任何参数旁边使用“(array[i])”代码,那么因为该函数是参数,所以这不会也应用于整个函数吗?比如下面这样:

function(number) { sum += number; }(array[i])

最佳答案

at what point does the function know about every element

绝对不会(就像您传入 console.log 时一样)。

forEach 函数在此行调用它:

action(array[i]);

此时,它只知道数组中的单个值,因为这就是传递给它的所有值。

(它还知道 sum 变量,因为它的定义范围比函数更广泛)。

关于javascript - 一个函数如何传递给另一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26223650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com