gpt4 book ai didi

javascript - Eloquent JavaScript。抽象数组遍历。第二版。第 83 页

转载 作者:行者123 更新时间:2023-11-30 16:39:06 25 4
gpt4 key购买 nike

我不知道这是怎么回事。这是代码。

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);

我知道 sum =+ number; 正在传递给 forEach 并循环遍历数组编号。但我无法弄清楚这是如何发生的细节。像这样用 function(number) {sum =+ number} 代替 action

for (var i = 0; i < [1, 2, 3, 4, 5].length; i++)
function(number) {
sum += number;
} (array[i]);
}

没有意义,也不运行。会起作用的是

var numbers = [1, 2, 3, 4, 5], sum = 0;
for (var i = 0; i < numbers.length; i++)
sum += (numbers[i]);
debug(sum);
console.log(sum);

这是我可以压缩并使其工作的最大数量。但是你怎么到这里呢?换句话说,到底发生了什么?

感谢您的帮助。这个概念似乎是 Haverbeke 方法的基础,所以我想我最好理解它。

最佳答案

forEach 函数正在为数组中的每个元素调用action

所有 forEach 在这里所做的就是抽象出一个循环,就像您几乎拥有的循环一样:

for (var i = 0; i < numbers.length; i++){
sum += numbers[i];
}

也许 action (array[i]) 把你绊倒了。了解这是对数组中的元素调用操作,因此更直观地说,它看起来像action(array[i])

对于 foreach,此调用在代码内部处理——在 action (array[i]) 处。这就是为什么您可以只传递一个函数而无需自己调用它的原因。

在一句话中,forEach 通过调用您提供的数组中每个元素的函数来工作。

如果您需要另一个例子来解决这个问题,请考虑这个(假设 forEach 是您问题中的那个):

var greetings = ["Hello", "Hi", "How are ya"];

function printGreeting(greeting){
console.log(greeting, "Greg");
}

forEach(greetings, printGreeting);

正如您在此处看到的,printGreeting 通过传递 greetings[i] 的每个值来调用 greetings 中的所有元素>.

在数组上用 for 循环做的任何事情都可以使用 forEach 循环来完成,也许更容易。

有关更多信息,请在此处查看标准 Array.prototype.forEach():https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

关于javascript - Eloquent JavaScript。抽象数组遍历。第二版。第 83 页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32274032/

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