JavaScript求和函数console.log正常输出但return返回undefined,如何解决?
问题分析与解决
你遇到的核心问题很明确:你的函数没有把计算好的总和返回给外部调用者,只是用console.log在函数内部把结果打印出来了。
在JavaScript里,函数如果没有显式写return语句,默认会返回undefined。所以你执行var sum = addNumbers(...)时,sum拿到的就是这个默认值,而console.log(x)只是在控制台输出结果,并不会把值传递给函数外部。
修改后的代码
只需要在函数末尾添加return x;语句,把计算好的总和返回出去就行:
function addNumbers(arr){ var x = 0 ; // 建议给i加上var声明,避免污染全局变量 for(var i = 0; i < arr.length; i++){ x = x + arr[i]; } console.log(x); // 保留内部打印也没问题 return x; // 关键:把结果返回给调用者 } var sum = addNumbers([2, 10, 4, 8, 4]); console.log(sum); // 现在这里会输出28了
额外小提示
循环里的i如果不声明的话,会自动成为全局变量,这可能会引发一些意想不到的问题,所以最好加上var(或者ES6的let)来限定它的作用域。
内容的提问来源于stack exchange,提问作者Engie T
相关产品推荐
相关产品推荐

