You need to enable JavaScript to run this app. JavaScript嵌套if-else实现闰年判断时2016等年份识别错误如何解决
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript嵌套if-else实现闰年判断时2016等年份识别错误如何解决

闰年判断代码故障排查与修复

核心故障原因

  • 嵌套if-else的分支逻辑错误:符合「能被4整除但不能被100整除」规则的普通闰年,被错误判定为非闰年
  • 可选优化:prompt输入返回值为字符串类型,虽然取模运算会触发隐式类型转换,但存在特殊输入下的异常风险,建议显式转换为数值类型

错误逻辑复盘

原代码中,当年份满足y % 4 === 0且不满足y % 100 === 0时,进入的分支直接输出「不是闰年」,完全违背了普通闰年的判定规则:

// 原代码错误分支
if (y % 100 === 0) {
  // 世纪年判断逻辑...
} else {
  // 此处本应为普通闰年,原代码错误输出非闰年
  alert(y + " is not a leap year");
}

2000年属于世纪年,会走世纪年判定分支,因此结果正确;2016、2020属于普通闰年,命中上述错误分支,因此判定异常。

修复后代码

// 显式将输入转换为数值类型
const y = Number(prompt("Enter the year"));
// 增加非法输入校验
if (isNaN(y)) {
  alert("请输入合法的年份数值");
} else if (y % 4 === 0) {
  if (y % 100 === 0) {
    // 世纪年判断
    alert(y % 400 === 0 ? `${y} 是闰年` : `${y} 不是闰年`);
  } else {
    // 普通闰年判定正确分支
    alert(`${y} 是闰年`);
  }
} else {
  alert(`${y} 不是闰年`);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 14:39:04