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

我是 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 整除 = Leap

  • 如果年份可以被 4 整除并且可以被 100 整除并且可以被 400 整除 = Leap

  • 否则它不是闰年。

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

  • 如果年份能被 4 整除且不能被 100 整除 = Leap

  • 或者

  • 仅当年份可被 400 整除 = 闰(不包括其他条件)

  • 否则不是闰年

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


largeQ
浏览 183回答 1
1回答

翻翻过去那场雪

闰年的条件是年份能被 4 而不是 100 整除,或者年份能被 400 整除。在数学上,任何能被 400 整除的东西都可以被 4 和 100 整除,这就是闰年是 if (x % 4 AND NOT x % 100) OR (x % 400) 的原因。你可以看到它像这个因子分解:400 = 4 * 100,所以任何可以写成的数字都可以n * 400写成n * 4 * 100,所以你的条件只是多余的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript