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

JavaScript四则运算代码输入数值后显示NaN问题求助

问题分析与修复方案

导致控制台输出NaN的核心原因

  1. 内部函数调用未传参:sum()、minus()等函数调用时没有传入x和y,导致函数内部的x、y为undefined,任何运算结果都会是NaN。
  2. 加法逻辑错误:prompt返回的是字符串类型,直接执行x + y会触发字符串拼接而非数值加法,比如输入1和2会得到"12",后续parseInt虽能转成数字,但逻辑本身不符合加法需求。
  3. 冗余参数定义:外层perform函数的x、y参数被内部prompt重新赋值,完全没必要提前定义。

修复后的代码

function perform() {
  // 直接将输入转为数值类型,避免后续运算出错
  const x = Number(prompt("输入第一个数字"));
  const y = Number(prompt("输入第二个数字"));

  function sum(x, y) {
    console.log("加法结果:", x + y);
  }
  sum(x, y);

  function minus(x, y) {
    console.log("减法结果:", x - y);
  }
  minus(x, y);

  function multiply(x, y) {
    console.log("乘法结果:", x * y);
  }
  multiply(x, y);
  
  function divide(x, y) {
    // 增加防除以0判断
    if (y === 0) {
      console.log("除法错误:不能除以0");
      return;
    }
    console.log("除法结果:", x / y);
  }
  divide(x, y);
}

关键修复点说明

  • 调用内部函数时必须传入获取到的x和y,确保函数能拿到正确的运算数值。
  • 用Number()将prompt输入直接转为数值类型,彻底避免字符串拼接问题,后续运算无需重复转换。
  • 移除perform函数冗余的x、y参数,减少变量混淆。
  • 新增除法防零判断,避免出现Infinity的异常输出。

内容的提问来源于stack exchange,提问作者Adithya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 11:52:05