JavaScript编写加法计算器时alert结果重复弹出两次如何修复
问题根因
重复弹窗是因为你写了两套完全重叠的加法判断逻辑,1+1的输入场景会同时命中两套逻辑的触发条件,因此连续执行两次alert("2"):
- 第一套逻辑:先校验第一个输入数是否为1,再校验第二个输入数的值,匹配到第二个数是1时弹出第一次结果
- 第二套逻辑:先校验第二个输入数是否为1,再校验第一个输入数的值,匹配到第一个数是1时弹出第二次结果
不止1+1会触发重复弹窗,所有两个输入数都在1-9区间的加法运算,都会同时命中两套逻辑,弹出两次结果。另外你第三个输入框的提示文案写的是Input 3rd number属于笔误,实际应该提示输入第二个数字。
修复方法
最小改动修复
直接删除其中一套重复的判断块即可,比如删掉从if (number2 == "1")开始的整块反向判断代码,补全第一个数为2-9的对应判断分支,就不会再出现重复弹窗。
最小改动后的可运行代码示例:
var number1 = prompt("Input the first number"); var op = prompt("Input operator"); var number2 = prompt("Input the second number"); if (op == "+") { if (number1 == "1") { if (number2 == "1") alert("2"); if (number2 == "2") alert("3"); if (number2 == "3") alert("4"); if (number2 == "4") alert("5"); if (number2 == "5") alert("6"); if (number2 == "6") alert("7"); if (number2 == "7") alert("8"); if (number2 == "8") alert("9"); if (number2 == "9") alert("10"); } if (number1 == "2") { if (number2 == "1") alert("3"); if (number2 == "2") alert("4"); if (number2 == "3") alert("5"); if (number2 == "4") alert("6"); if (number2 == "5") alert("7"); if (number2 == "6") alert("8"); if (number2 == "7") alert("9"); if (number2 == "8") alert("10"); if (number2 == "9") alert("11"); } // 按相同格式补全number1为3-9的判断分支即可 }
更合理的简化写法
没必要硬编码所有加法结果,直接把输入的字符串转成数字类型做运算即可,代码量大幅减少,后续要扩展减法、乘法、除法也更方便,从根源上避免重复判断的问题:
const number1 = Number(prompt("Input the first number")); const op = prompt("Input operator"); const number2 = Number(prompt("Input the second number")); if (op === "+") { alert(number1 + number2); }
内容的提问来源于stack exchange,提问作者xxJonnathanYt2011
相关产品推荐
相关产品推荐

