gpt4 book ai didi

javascript - JS::First Class Functions::参数值困惑

转载 作者:行者123 更新时间:2023-12-02 23:09:54 24 4
gpt4 key购买 nike

我不明白第一类函数的参数“number”如何具有它的值。

我已经思考这个问题好几天了,但我的想法没有任何进展。没有错误代码,因为这是完全有效的 JS。

此示例代码来自《Eloquent JS》一书(http://eloquentjavascript.net/2nd_edition/05_higher_order.html#c_chCFkdNvRH 第二版)。

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

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

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

//output
console.log(sum);
// → 15

我不明白为什么“number”不被视为未定义。参数不应该是引用实际数组的“numbers[i]”或“numbers”吗?

最佳答案

forEach 声明中,您将函数引用作为第二个参数传递,您正在调用该函数并传递数组中的值:

function forEach(array, action) <--- action is a function reference

action 的调用方式类似于 action(array[i]),使用数组中的值。

现在,当调用 forEach 时,action 的值是一个实际的函数对象。

你可以这样想象它:

action = function(number) {
sum += number;
}

action 预计会采用一个参数,该参数是用数组中的值调用的,因此 number 参数实际上是数组 array[ 中的值我]

关于javascript - JS::First Class Functions::参数值困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57419170/

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