JavaScript定时展示指定消息脚本判断逻辑异常求助
问题排查与修复方案
核心错误:条件判断误用赋值运算符
你代码中所有时间判断分支里的hour = xx都是赋值操作,不是相等判断:
- JavaScript 中单个
=的作用是给左侧变量赋值,==/===才是判断两侧值是否相等的运算符 - 当代码执行到
else if (hour =10 && minute <40)分支时,会先把hour变量强制赋值为10,再判断后续条件。你当前时间为19:29,走到该判断时hour被改成10,且分钟29<40,自然就命中了这个错误分支。
修复方法:把所有条件判断里的hour = xx全部替换为hour === xx,示例修改如下:
// 错误写法 else if (hour =10 && minute <40) // 正确写法 else if (hour === 10 && minute <40)
所有时间判断分支都要做同样修改。
次要风险:时间变量类型被意外修改
你在代码开头对minute、second做补零操作时,直接把原本的数字类型改成了字符串类型,后续做大小比较时可能出现不符合预期的隐式类型转换问题。
修复方法:单独声明用于展示的格式化字符串变量,不要修改原有的数字类型时间变量,示例代码:
var date = new Date(); var hour = date.getHours(); var minute = date.getMinutes(); var second = date.getSeconds(); // 单独声明格式化展示用变量,不修改原数值 var displayMinute = minute < 10 ? "0" + minute : minute; var displaySecond = second < 10 ? "0" + second : second;
内容的提问来源于stack exchange,提问作者Edwin
相关产品推荐
相关产品推荐

