Я немного смущен об этом.javascript array date error
Этот фрагмент кода работает хорошо, но имеет странное поведение.
var tmpcurdte = eval(dataSource[i].startDate);
tmpcurdte.setDate(tmpcurdte.getDate() + 1);
while (tmpcurdte < tmpenddte) {
console.log("block date: " + tmpcurdte);
blockdayarray[blockdayarray.length] = tmpcurdte;
console.log("blockdayarray: " + blockdayarray);
tmpcurdte.setDate(tmpcurdte.getDate() + 1);
}
Выход
block date :Sat Nov 12 2016 00:00:00 GMT+0100 (CET)
blockdayarray :**Sat Nov 12** 2016 00:00:00 GMT+0100 (CET)
block date :Sat Dec 31 2016 00:00:00 GMT+0100 (CET)
blockdayarray :**Sun Nov 13** 2016 00:00:00 GMT+0100 (CET),**Sat Dec 31** 2016 00:00:00 GMT+0100 (CET)
block date :Sun Jan 01 2017 00:00:00 GMT+0100 (CET)
blockdayarray :Sun Nov 13 2016 00:00:00 GMT+0100 (CET),**Sun Jan 01 2017** 00:00:00 GMT+0100 (CET),**Sun Jan 01 2017** 00:00:00 GMT+0100 (CET)
block date :Sat Feb 04 2017 00:00:00 GMT+0100 (CET)
blockdayarray :Sun Nov 13 2016 00:00:00 GMT+0100 (CET),Mon Jan 02 2017 00:00:00 GMT+0100 (CET),**Mon Jan 02 2017** 00:00:00 GMT+0100 (CET),Sat Feb 04 2017 00:00:00 GMT+0100 (CET)
Как вы можете видеть, что предыдущая дата в массиве изменяется, когда я нажимаю новый. Может ли кто-нибудь помочь/объяснить это?
Почему вы делаете вещь 'eval'? – ArsalanDotMe
читайте ниже. thx за то, что уделил время исследователю моего кода :-) – user3242509