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

JS实现年份大于currentYear时替换文本,加if后无输出如何解决

问题原因

  • tense变量仅在循环外赋值为固定的was on,没有随遍历的year动态更新,即使你新增了判断逻辑,也大概率是把判断位置写在了循环外,没有对每一个年份做条件判断
  • 如果你添加判断后无任何输出,说明你的判断条件错误拦截了所有输出场景,比如错误把输出逻辑写在了year > currentYear的判断内部,导致小于等于当前年份的所有记录都不输出
  • 代码中原有的d.getDate() === 27 && d.getMonth() === 4判断属于冗余逻辑:你初始化new Date(year, 4, 27)时已经指定了月份和日期,参数合法的情况下生成的日期必然是对应年的5月27日,该判断不会影响执行但没有实际作用。

修改方案

把时态判断逻辑放到循环内部,每遍历一个年份就动态计算对应的时态:

let myDate = new Date();
const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ];
const currentYear = myDate.getFullYear();
for(let year= 2020; year <= 2030; year++){
    // 动态判断时态,大于当前年份用将来时,否则用过去时
    const tense = year > currentYear ? 'will be on' : 'was on';
    const d = new Date(year, 4, 27);
    const output = `my birthday in ${year} ${tense} ${days[d.getDay()]}`;
    console.log(output);
}

如果需要对当前年份单独适配现在时,可以调整判断逻辑:

let tense;
if(year > currentYear) {
  tense = 'will be on';
} else if(year === currentYear) {
  tense = 'is on';
} else {
  tense = 'was on';
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 01:06:04