You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript if语句始终为true问题:日历开发中的条件判断异常

问题原因及修复方案

核心错误:赋值运算符替代了比较运算符

你代码里的if和else if条件使用的是单等号=(赋值操作),而不是用于判断相等的三等号===(严格相等)或者双等号==(松散相等)。

举个例子:

if(lastMonthDay = 31) { ... }

这行代码的作用是把31赋值给lastMonthDay,然后这个赋值表达式的返回值是31——在JavaScript的布尔判断中,非零数字会被判定为true,所以第一个if分支永远会被触发,不管你初始设置的lastMonthDay是多少,后面的else if和else分支根本不会执行。

修复后的代码片段

只需要把所有条件里的=替换成===即可:

// 修正后的条件判断部分
if(lastMonthDay === 31){
    // 原31天月份的逻辑
}
else if(lastMonthDay === 30){
    // 原30天月份的逻辑
}
else{   
    // 原其他情况(比如2月)的逻辑
}

额外建议

  1. 循环中的变量i、n,还有newRow、newCell最好加上let或var声明,避免成为全局变量:
    for (let i = 0; i < 5; ++i){
        let newRow = tbodyRef.insertRow();
        for (let n = 0; n < 7; ++n){
            let newCell = newRow.insertCell()
            // ... 后续逻辑
        }
    }
    
  2. 严格相等===是推荐的比较方式,它不会进行自动类型转换,比==更安全,能避免很多潜在的类型错误。

内容的提问来源于stack exchange,提问作者user20065867

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 18:45:42