JavaScript中else与!==的区别是什么?新手技术咨询
分清else和!==,修复你的代码逻辑
一、else和!==的核心区别
!==是比较运算符:用来判断两个值是否不全等,返回true或false,只能作为if/else if的判断条件使用。else是分支兜底:当前面所有if、else if的条件都不成立时,才会执行else里的代码,它不需要写条件,是最后一道逻辑分支。
二、你的代码为什么不符合预期
- 逻辑顺序踩坑:你写的
else if(day!==monday)会把所有不是monday的情况都拦截——不管用户输入的是其他合法日期(比如friday)还是乱码,都会触发这个分支,导致后面的else(显示Invalid Day)永远不会执行。 - 大小写不统一:
Thursday首字母大写,其他日期都是小写,用户输入小写thursday时会匹配失败,直接跳到else if(day!==monday)分支。
三、修正后的代码
先解决大小写问题,再调整逻辑顺序:
const day = prompt(`Insert The Day`).toLowerCase(); // 把输入统一转成小写,避免大小写匹配错误 if(day === `monday`){ console.log(`Pray All Day Long🙏🏽`) } else if(day === `tuesday`){ console.log(`Code All Day Long`) } else if(day === `wednesday`){ console.log(`Meditate All Day Long`) } else if(day === `thursday`){ // 改成小写,和输入格式统一 console.log(`Design All Day Long`) } else if(['friday', 'saturday', 'sunday'].includes(day)){ // 仅对有效非周一的日期显示这句话 console.log(`Why Not Monday?`) } else { console.log(`Invalid Day`) }
如果想简化逻辑,也可以先判断是否为有效星期,再细分:
const day = prompt(`Insert The Day`).toLowerCase(); const validWeekDays = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']; if(!validWeekDays.includes(day)){ console.log(`Invalid Day`) } else if(day === `monday`){ console.log(`Pray All Day Long🙏🏽`) } else if(day === `tuesday`){ console.log(`Code All Day Long`) } else if(day === `wednesday`){ console.log(`Meditate All Day Long`) } else if(day === `thursday`){ console.log(`Design All Day Long`) } else { console.log(`Why Not Monday?`) }
四、关键要点
- 使用
!==做判断时,一定要注意条件的顺序,别让它提前覆盖后面的分支逻辑。 else是最后执行的分支,前面所有条件都不满足才会触发。- 处理用户输入时,统一格式(比如转小写)能避免很多匹配错误。
内容的提问来源于stack exchange,提问作者Ermilevel
相关产品推荐
相关产品推荐

