如何正确处理参数数组以避免undefined错误?附计算器代码问题
问题分析与修复:计算器函数返回undefined的原因及解决方案
核心问题:为什么resualtValues()返回undefined?
你代码里的resualtValues用了forEach方法,但**forEach本身没有返回值**——不管你在回调函数里写多少次return,它最终都会返回undefined,这就是你看到的错误根源。另外当前这个函数只处理了加法,没覆盖你要的四则运算需求。
修复方案
- 把
forEach换成map:map会遍历数组并返回一个包含所有回调返回值的新数组,能正确拿到运算结果。 - 扩展函数逻辑,让它处理四则运算的所有类型。
- 修正拼写错误:
resualtValues改为resultValues(拼写错误可能导致后续维护问题)。
修复后的完整代码
const calculator = { sum: [], subtraction: [], multiplication: [], division: [], sumValues: function(num1, num2) { this.sum.push({ num1, num2 }); }, subtractionValues: function(num1, num2) { this.subtraction.push({ num1, num2 }); }, multiplyValues: function(num1, num2) { this.multiplication.push({ num1, num2 }); }, divisionValues: function(num1, num2) { this.division.push({ num1, num2 }); }, resultValues: function() { return { sumResults: this.sum.map(item => item.num1 + item.num2), subtractionResults: this.subtraction.map(item => item.num1 - item.num2), multiplicationResults: this.multiplication.map(item => item.num1 * item.num2), divisionResults: this.division.map(item => item.num2 !== 0 ? item.num1 / item.num2 : '除数不能为0') }; } }; calculator.sumValues(25, 4); calculator.subtractionValues(20, 5); calculator.multiplyValues(5, 6); calculator.divisionValues(45, 5); calculator.divisionValues(10, 0); // 测试除数为0的情况 console.log(calculator.resultValues());
修复后说明
- 调用
resultValues()会返回一个对象,包含四则运算各自的所有结果数组。 - 新增了除数为0的判断,避免出现NaN或运行错误。
- 用ES6对象简写语法简化了代码,提升可读性。
内容的提问来源于stack exchange,提问作者Rick sanchez
相关产品推荐
相关产品推荐

