JavaScript计算器开发问题:inputUser函数使用不当导致运算结果返回NaN的求助
解决计算器重复输入逻辑与NaN错误问题
你已经意识到重复代码的问题,这点做得非常好!当前的bug主要出在多值返回的写法错误和运算函数未接收输入值这两个环节,咱们一步步来修复:
问题1:inputUser()的返回值逻辑错误
JavaScript里的逗号运算符不会帮你返回多个值,return number1, number2;实际上只会返回最后一个值number2,而且你没有把获取到的数字传递给运算函数,导致运算函数里的变量完全是未定义状态。
问题2:运算函数未接收参数
你的addition()和subtraction()函数里的nb1、nb2都是未赋值的变量,默认值是undefined,undefined + undefined自然会得到NaN。
完整修复方案
步骤1:修改inputUser(),返回包含两个数字的数组
用数组来包装两个输入值,这样就能一次性返回两个数字:
function inputUser(){ var number1 = readline.questionInt("Enter number 1 please : "); var number2 = readline.questionInt("Enter number 2 please : "); return [number1, number2]; // 返回包含两个数字的数组 }
步骤2:修改运算函数,让它们接收参数
让运算函数直接使用传入的参数进行计算,不再依赖未定义的内部变量:
function addition(nb1, nb2){ return nb1 + nb2; // 直接用参数计算并返回结果 } function subtraction(nb1, nb2){ return nb1 - nb2; }
步骤3:在switch分支中接收输入值并传递给运算函数
调用inputUser()后,通过数组解构(或索引)获取两个数字,再传给对应的运算函数:
switch(choice){ case 1: console.log("Option 1 - Addition "); const [num1Add, num2Add] = inputUser(); // 解构数组得到两个数字 var add = addition(num1Add, num2Add); console.log("The result is " + add); break; case 2: console.log("Option 2 - Subtraction "); const [num1Sub, num2Sub] = inputUser(); var sub = subtraction(num1Sub, num2Sub); console.log("The result is " + sub); break; }
如果不想用解构语法,也可以用数组索引获取值:
const numbers = inputUser(); var add = addition(numbers[0], numbers[1]);
额外优化小建议
- 可以把
inputUser()的提示文本做成参数,适配不同场景的提示需求:function inputUser(prompt1 = "Enter number 1 please : ", prompt2 = "Enter number 2 please : "){ var number1 = readline.questionInt(prompt1); var number2 = readline.questionInt(prompt2); return [number1, number2]; } - 注意变量名拼写一致性,你代码里出现了
substraction和subtraction两种写法,统一拼写能避免后续不必要的bug。
内容的提问来源于stack exchange,提问作者augustin1340
相关产品推荐
相关产品推荐

