You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确处理参数数组以避免undefined错误?附计算器代码问题

问题分析与修复:计算器函数返回undefined的原因及解决方案

核心问题:为什么resualtValues()返回undefined?

你代码里的resualtValues用了forEach方法,但**forEach本身没有返回值**——不管你在回调函数里写多少次return,它最终都会返回undefined,这就是你看到的错误根源。另外当前这个函数只处理了加法,没覆盖你要的四则运算需求。

修复方案

  1. 把forEach换成map:map会遍历数组并返回一个包含所有回调返回值的新数组,能正确拿到运算结果。
  2. 扩展函数逻辑,让它处理四则运算的所有类型。
  3. 修正拼写错误: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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 10:35:17