JavaScript四则运算代码输入数值后显示NaN问题求助
问题分析与修复方案
导致控制台输出NaN的核心原因
- 内部函数调用未传参:
sum()、minus()等函数调用时没有传入x和y,导致函数内部的x、y为undefined,任何运算结果都会是NaN。 - 加法逻辑错误:
prompt返回的是字符串类型,直接执行x + y会触发字符串拼接而非数值加法,比如输入1和2会得到"12",后续parseInt虽能转成数字,但逻辑本身不符合加法需求。 - 冗余参数定义:外层
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
相关产品推荐
相关产品推荐

