JavaScript如何实现同一个函数传入不同参数调用?
问题根因
你代码首次输入就触发告警的核心原因是:userName2和userName3初始值都是undefined,第二个判断分支里的userName2 === userName3条件永久成立,只要第一个判断不触发就会弹出告警。
除此之外你的代码还存在两处逻辑缺陷:
- 函数未定义参数接收规则,调用时传入的
userName2、userName3完全没有被用到 - 每次调用函数都会把新输入的用户名覆盖赋值给
userName1,第二次、第三次输入的内容根本没有存储到对应变量,无法完成后续的重复校验
修复方案
推荐使用数组存储已录入的用户名,逻辑更简洁易维护,修改后的代码如下:
// 存储已录入的用户名 const usedNames = []; // 执行3次录入校验 alcoholAgeCheck(); alcoholAgeCheck(); alcoholAgeCheck(); function alcoholAgeCheck() { const inputName = prompt('请输入姓名'); // 校验是否重复 if (usedNames.includes(inputName)) { alert('抱歉,同一个名字仅可使用一次'); // 重复时可重新触发录入,不需要可删除该行 return alcoholAgeCheck(); } // 不重复则存入数组 usedNames.push(inputName); }
内容的提问来源于stack exchange,提问作者helpme
相关产品推荐
相关产品推荐

