[英]Javascript while loop weird behavior with dates
我目前正在從以下while循環中獲取怪異的行為。
var i = 0;
var endDate = new Date();
var startDate = new Date();
startDate.setDate(startDate.getDate() - 6);
while (start <= end){
alert (start.getDate());
start.setDate(start.getDate() + i);
i++;
}
我期望的輸出(假設今天是9月26日)將是:
20 21 22 23 24 25 26
但是我得到以下輸出
20 20 21 23 26
我認為我無法正確處理startDate變量的范圍,但不確定如何解決此問題。
任何幫助是極大的贊賞
您的迭代器不正確。 您甚至根本不需要迭代器。 只需在while循環的第二行中添加1而不是i,然后刪除var i = 0和i ++。
var endDate = new Date();
var startDate = new Date();
startDate.setDate(startDate.getDate() - 6);
while (startDate <= endData){
alert (start.getDate());
start.setDate(start.getDate() + 1);
}
之所以獲得20 20 21 23 26的原因是,在第一個循環中,您返回六天,然后加零; 第二個循環是六天前,然后加一; 第三個循環是您五天前加2; 第四個循環現在回到三天前,並加上3; 等等
假設開始和結束是您的日期變量:
while (start <= end){
alert (start.getDate());
start.setDate(start.getDate() + i);
i++;
}
循環迭代1:日期為20,然后添加0 => 20
循環迭代2:日期為20,然后加上1 => 21
循環迭代3:日期為21,然后加上2 => 23
循環迭代4:日期為23,然后加上3 => 26
要獲得您期望的結果,請嘗試以下操作:
while (start <= end){
alert (start.getDate());
start.setDate(start.getDate() + 1);
i++;
}
如果您通過代碼調試,則可能會看到循環的每次迭代,您都在用不同的值修改日期- i
在循環中每次都在更改。 第一次通過更新日期0
,然后1
,然后2
,等等。這是你在輸出看到的。
將i
替換為1
,您將獲得預期的輸出。 實際上,您甚至不需要i
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.