没有所有"if"和"else"语句,有没有更有效的方法来做到这一点?

1 javascript performance if-statement

你会如何更有效地编程?

if( randomYear%4==0 ) { 
    if( randomYear%100==0 ) {
        if( randomYear%400==0 ) {
            randomDay = 1 + Math.floor(Math.random()*29);
        }
        else {
            randomDay = 1 + Math.floor(Math.random()*28);
        }
    else{
        randomDay = 1 + Math.floor(Math.random()*29);
    }
else{
    randomDay = 1 + Math.floor(Math.random()*28);
}
Run Code Online (Sandbox Code Playgroud)

首先,我正在使用math.floor因为它包含0并且排除1,这正是我正在寻找的.这样做的目的是确定变量'randomYear'是否是闰年并且在2月有适当的日期.

我主要关注所有if和else语句.顺便说一下,我正在使用Javascript.非常感谢!!

Nie*_*sol 5

你甚至不需要数学:

var tmp = new Date(year,1,29); // attempt to get February 29th
isleapyear = (tmp.getMonth() == 1);
Run Code Online (Sandbox Code Playgroud)

  • 对我来说,这似乎是众所周知的"正确的方法".在给定年份的2月初之后29天创建日期,然后查明结果日期是否仍然是2月是一个漂亮的解决方案,依赖于JavaScript已经"知道"大量有关细节的事实闰年,时区等等 (2认同)