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

如何在JavaScript中判断闰年?代码问题排查与修正

闰年判断代码的问题修正与解析

嗨,很高兴你已经定位到核心问题啦!咱们把整个问题拆解清楚:

首先,闰年的判定规则是:

  • 能被 400 整除的年份,是闰年;
  • 或者能被 4 整除,但不能被100整除的年份,是闰年。

你原代码里的错误逻辑:

(this.year % 4 === 0 && (this.year % 100 === 0))

这部分条件是在判断“能被4整除且能被100整除”,但这类年份(比如1900年)并不是闰年,除非它同时满足能被400整除(比如2000年)。所以你修正后的!(this.year % 100 === 0)才是正确的,它准确表达了“能被4整除但不能被100整除”的规则。

另外还有个容易被忽略的细节:你用箭头函数定义了原型方法isLeap,箭头函数不会绑定自身的this,它会继承外层作用域的this,这会导致this.year无法正确指向实例的year属性。建议把箭头函数改成普通函数,保证this的指向正确。

最终修正后的完整代码如下:

let Year = function(year) { 
  this.year = year; 
}; 

Year.prototype.isLeap = function() { 
  return (this.year % 400 === 0 || (this.year % 4 === 0 && !(this.year % 100 === 0))); 
}; 

// 测试示例
let year = new Year(2014); 
console.log(year.isLeap()); // 输出false,2014年确实不是闰年
let leapYear = new Year(2020);
console.log(leapYear.isLeap()); // 输出true,符合预期

这样代码既保持了简洁性,又完全符合闰年的判定逻辑啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:46:36