IF条件判断逻辑异常:为何输入符合条件仍触发错误提示?
条件判断逻辑错误分析
错误代码
let addOrRem = String(prompt("Do you want to add or remove any content? (add/rem)").trim().toLocaleLowerCase()); if(addOrRem !== "rem" || addOrRem !== "add") { alert("Invalid answer, try again!"); }
这段代码的核心问题是逻辑运算符使用错误:||(逻辑或)的逻辑会导致无论输入什么值,条件永远为true。具体来说:
- 输入"rem"时,
addOrRem !== "add"为true,整个||条件成立,触发提示; - 输入"add"时,
addOrRem !== "rem"为true,同样触发提示; - 输入其他值时,两个子条件都为true,自然也触发提示。
可正常运行的嵌套IF代码
let addOrRem = String(prompt("Do you want to add or remove any content? (add/rem)").trim().toLocaleLowerCase()); if(addOrRem !== "rem") { if(addOrRem !== "add"){ alert("Invalid answer, try again!"); } }
嵌套IF的逻辑等价于&&(逻辑与):只有当输入既不是"rem"且不是"add"时,才会触发提示,完全符合需求。
更简洁的修正写法
无需嵌套IF,只需把错误代码里的||改成&&即可:
let addOrRem = String(prompt("Do you want to add or remove any content? (add/rem)").trim().toLocaleLowerCase()); if(addOrRem !== "rem" && addOrRem !== "add") { alert("Invalid answer, try again!"); }
内容的提问来源于stack exchange,提问作者外人です
相关产品推荐
相关产品推荐

