无法理解两个方程式之间的区别

Can't understand the difference between 2 equations

我是 Javascript 的新手,一直在努力找出闰年计算器的最佳方程式。我写了这样的解决方案:

if ((year % 4 ===0 && year % 100 !==0) || (year % 4 ===0 && year % 100 ===0 && year % 400 ===0)) {
  alert("Leap");
} else {
  alert("Not Leap");
}

完成后,我搜索了其他方式,发现它可以这样写:

if ((year % 4 === 0 && year % 100 !== 0) || (year % 400 ===0)) {
  alert("Leap");
} else {
  alert("Not Leap");
}

但是我不明白怎么写成这样,因为知道闰年的条件:

我不明白第二个代码示例背后的逻辑,对我来说,就好像:

有人可以解释为什么第二个代码示例也有效,以及它是如何解释的吗?

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

从数学上讲,任何能被 400 整除的东西都能被 4 和 100 整除,这就是为什么闰年是 if (x % 4 AND NOT x % 100) OR (x % 400) 的原因。

你可以看到这样的因子分解:400 = 4 * 100,所以任何可以写成n * 400的数字都可以写成n * 4 * 100,所以你的条件只是多余的。