JavaScript循环无限期运行

时间:2010-08-11 20:41:40

标签: javascript

所以,我想让我的剧本弄清楚学期的最后一天。它需要运行,直到当前日期小于该季度的最后一天(如前所述)。它无论如何都会继续运行。 ps,我认为问题可能是它没有重置“lastDayofQuarter”(至少在循环之外)。我怎么能绕过这个呢?万分感谢!

var today = new Date();

var lastDayofQuarter=new Date();

var lastDaysofQuarter=new Array();

lastDaysofQuarter[0]=(2009,11,3); 
lastDaysofQuarter[1]=(2010,11,10);
lastDaysofQuarter[2]=(2011,4,18);
lastDaysofQuarter[3]=(2011,5,10);

lastDayofQuarter.setFullYear(lastDaysofQuarter[0]);

i=0;

while (lastDayofQuarter<today) {
 lastDayofQuarter.setFullYear(lastDaysofQuarter[i]);
 i++; 
}

2 个答案:

答案 0 :(得分:2)

这些行在语法上是有效的,但它们无法正常工作:

lastDaysofQuarter[0]=(2009, 11, 3); 
// ...

comma operator计算其两个操作数(从左到右)并返回第二个操作数的值。因此,(2009, 11, 3)只会返回3

看起来你想要做的事情:

lastDaysofQuarter[0] = new Date(2009, 11, 3); 
// ...

答案 1 :(得分:1)

setFullYear不接受Date作为参数 - 它接受一个 - 三个整数,表示该月的年,月和日。

您的脚本将执行您使用的操作,只需将数组中的值分配给lastDayofQuarter,而不是使用setFullYear

lastDaysofQuarter[0]=new Date(2009,11,3); 
lastDaysofQuarter[1]=new Date(2010,11,10);
lastDaysofQuarter[2]=new Date(2011,4,18);
lastDaysofQuarter[3]=new Date(2011,5,10);

lastDayofQuarter = lastDaysofQuarter[0];

i=1;

while (lastDayofQuarter<today) {
 lastDayofQuarter = lastDaysofQuarter[i];
 i++; 
}