Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检测闰年(javascript)_Javascript_Oop - Fatal编程技术网

如何检测闰年(javascript)

如何检测闰年(javascript),javascript,oop,Javascript,Oop,以下函数用于检测闰年,该闰年位于每年可被4整除的年份(除每年可被100整除的年份外),除非该年份也可被400整除 变量年份=函数编号{ 这个数字=数字; }; Year.prototype.isLeap=函数{ 返回this.isdivisible by 4&!this.isdivisible by 100 | | this.isdivisible by 400; } Year.prototype.isDivisibleBy=函数除数{ 返回此值。数字%除数===0; } const comm

以下函数用于检测闰年,该闰年位于每年可被4整除的年份(除每年可被100整除的年份外),除非该年份也可被400整除

变量年份=函数编号{ 这个数字=数字; }; Year.prototype.isLeap=函数{ 返回this.isdivisible by 4&!this.isdivisible by 100 | | this.isdivisible by 400; } Year.prototype.isDivisibleBy=函数除数{ 返回此值。数字%除数===0; } const commonYears=[1700、1800、1900、1999、2001] 常数年数=[160002000420008] commonYears.forEachy=>console.logy,newyeary.isLeap
leapYears.forEachy=>console.logy,new Yeary.isLeap如果您尝试使用这种面向对象的样式,请执行以下操作:

功能测试耳{ 今年=年; this.isDivisible by=除数=>{ 本年返回%divisor===0; } this.isLeap==>{ 如果这是可以分开的{ 如果这个是400分!这个是100分{ 返回true; } } 返回false; } } const commonYears=[1700、1800、1900、1999、2001]; const leap years=[1600,2000,2004,2008]; const yearTester=新的yearTester; 功能整合{ yearTester.year=y; console.logic++是“+yearTester.isLeap?”:“不是”+“闰年”; } 普通的岁月。forEachconsoleIt; 闰年。forEachconsoleIt;
为什么不使用纯函数呢?您不需要对象的开销

常量IsDivisible by=number,除数=>number%除数===0; const isLeapYear=year=>isdivisiblybyear,4&&!Isdivisiblebyear,100 | | Isdivisiblebyear,400; const commonYears=[1700、1800、1900、1999、2001] 常数年数=[160002000420008] commonYears.forEachy=>console.logy,isleayeary
leapYears.forEachy=>console.logic,isleapYeary我将代码制作成一个可运行的代码段,但正如您所看到的,它在2000年返回true,在1999年返回false。你用什么年份进行测试?我甚至试过你的代码,但有1700年、1800年和1900年这样的例外,效果很好。我用的是随机年份,但问题是忘记了这里的括号。prototype.isLeap=function{返回this.isdivibibleby4&!this.isdivibleby100 | | this.isdivibleby400;}我只是试着运行你编辑的没有括号的代码,效果很好是的,这就是我要说的。您的代码似乎工作正常,那么您使用什么来测试只显示false的代码呢?