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
相关产品推荐
相关产品推荐

