gpt4 book ai didi

javascript - for循环周围的花括号改变输出

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:54:27 25 4
gpt4 key购买 nike

在研究关于高阶函数的 Eloquent Javascript 一章时,我遇到了这个例子:

function reduce(array, combine, start) {
var current = start;
for (var i = 0; i < array.length; i++)
current = combine(current, array[i]);
return current;
}

console.log(reduce([1, 2, 3, 4], function(a, b) {
return a + b;
}, 0));
// → 10

for 循环被重写以包含我认为是可选的花括号时,例如:

function reduce(array, combine, start) {
var current = start;
for (var i = 0; i < array.length; i++) {
current = combine(current, array[i]);
return current;
}
}

console.log(reduce([1, 2, 3, 4], function(a, b) {
return a + b;
}, 0));
// → 1

结果只是 1,而不是预期的 10。大括号在这里做什么来改变输出?

最佳答案

大括号按照您的要求执行:因为您在 for 循环中包含了 return 语句:

function reduce(array, combine, start) {
var current = start;
for (var i = 0; i < array.length; i++) {
current = combine(current, array[i]);
return current;
}
}

循环没有按预期停止,因为 return 退出循环,实际上在返回值时起作用,因此只有数组第一个元素的值:1 被折叠到 var current 并输出 1。鉴于:

function reduce(array, combine, start) {
var current = start;
for (var i = 0; i < array.length; i++) {
current = combine(current, array[i]);
}
return current;
}

返回预期输出:10,因为 for 在返回值之前折叠所有数组元素。

关于javascript - for循环周围的花括号改变输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42610151/

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