adi*_*din 2 javascript arrays for-loop function
我通过使用 for 循环遍历数组来将数组中的值相加,但它只返回第一个值。我收到的警报是 2 而不是像预期的 2014 年。
我究竟做错了什么?
JavaScript
$(document).ready(function() {
var array = [2, 2, 10, 0, 50, 1900, 25, 25];
function arraySum(arr) {
var answer = 0;
for (i = 0; i < array.length; i++) {
answer += array[i];
return answer;
}
}
var response = arraySum(array);
alert(response);
});
Run Code Online (Sandbox Code Playgroud)
因为您将 return 语句放在循环中,所以当它第一次命中这个 return 语句(即 2)时,它会以 answer 的值退出函数。你真正想要的是这样的:
$(document).ready(function() {
var array = [2, 2, 10, 0, 50, 1900, 25, 25];
function arraySum(arr) {
var answer = 0;
for (var i = 0; i < array.length; i++) {
answer += array[i];
// DON'T return here
}
// Return HERE
return answer;
}
var response = arraySum(array);
alert(response);
});
Run Code Online (Sandbox Code Playgroud)
如果这没有意义,请这样想:
你想执行一个动作八次,当它完成时你想对结果做些什么。在这种情况下,您将数字相加八次,然后提醒总数。不幸的是,如果你在循环中说 return,它会在每一个动作(添加)之后尝试“做某事”(返回)。因为它试图在这些动作中的每一个之后返回,所以循环实际上在第一个动作之后中断,并且永远不会添加最后七个数字。如果您想观看此过程的进行,您实际上可以将警报放在您的 return 语句以前所在的位置,并在每次迭代后看到它被击中(因此收到 8 个警报)。
作为旁注,您还应该使用 定义“i” var i
,因为您可以通过忘记“var”来真正搞砸范围。我也在上面的代码中修复了这个错误。感谢瑞安提请注意这一点。