Javascript array.push方法是否同步?
我正在编写一个简单的javascript函数,但它并不像我预期的那样 代码如下:Javascript array.push方法是否同步?,javascript,Javascript,我正在编写一个简单的javascript函数,但它并不像我预期的那样 代码如下: var startDate = new Date('2015-07-01 00:00 +0800'); var endDate = new Date('2015-07-10 00:00 +0800'); var arrayOfDates = []; if (endDate >= startDate) { while (startDate < endDat
var startDate = new Date('2015-07-01 00:00 +0800');
var endDate = new Date('2015-07-10 00:00 +0800');
var arrayOfDates = [];
if (endDate >= startDate) {
while (startDate < endDate) {
arrayOfDates.push(startDate);
startDate = new Date(startDate.setDate(startDate.getDate() + 1));
}
}
var startDate=新日期('2015-07-01 00:00+0800');
var endDate=新日期('2015-07-10 00:00+0800');
var arrayOfDates=[];
如果(结束日期>=开始日期){
while(开始日期<结束日期){
阵列日期推送(起始日期);
startDate=新日期(startDate.setDate(startDate.getDate()+1));
}
}
我希望阵列日期的结果是[2015-07-012015-07-022015-07-03….,2015-07-10']
。结果是[2015-07-022015-07-03….,2015-07-10']
为什么呢?在将变量推送到数组之前,
var startDate
是否会以某种方式更新?如果是这种情况,如何确保代码同步运行?当调用setDate()
时,会更改日期。日期原型上的所有setter函数都会改变日期实例
您必须创建一个新的日期实例,然后调用setter对其进行更改
startDate = new Date(startDate);
startDate.setDate(startDate().getDate() + 1);
调用
setDate()
时,会更改日期。日期原型上的所有setter函数都会改变日期实例
您必须创建一个新的日期实例,然后调用setter对其进行更改
startDate = new Date(startDate);
startDate.setDate(startDate().getDate() + 1);
它将为您完成任务,并且在推送您的当前日期之前不会更改您的日期:
var startDate = new Date('2015-07-01 00:00');
var endDate = new Date('2015-07-10 00:00');
var arrayOfDates = [];
if (endDate >= startDate) {
for(var dt = startDate; startDate < endDate; dt = new Date(startDate.setDate(startDate.getDate() + 1))){
console.log(startDate);
arrayOfDates.push(startDate);
}
}
var startDate=新日期('2015-07-01 00:00');
var endDate=新日期('2015-07-10 00:00');
var arrayOfDates=[];
如果(结束日期>=开始日期){
对于(var dt=startDate;startDate
在这里,您可以使用fiddle,它将为您完成任务,在推送当前日期之前,它不会更改您的日期:
var startDate = new Date('2015-07-01 00:00');
var endDate = new Date('2015-07-10 00:00');
var arrayOfDates = [];
if (endDate >= startDate) {
for(var dt = startDate; startDate < endDate; dt = new Date(startDate.setDate(startDate.getDate() + 1))){
console.log(startDate);
arrayOfDates.push(startDate);
}
}
var startDate=新日期('2015-07-01 00:00');
var endDate=新日期('2015-07-10 00:00');
var arrayOfDates=[];
如果(结束日期>=开始日期){
对于(var dt=startDate;startDate
这是你的小提琴似乎很好,我得到了7月1日至7月9日(包括在内)。Firefox不理解这种时间格式。在我的浏览器中,
endDate>=startDate
的结果为false。要回答名义上的问题,可以。看看你真正的问题是什么。看起来很好。我得到7月1日至7月9日包括在内。Firefox不理解这种时间格式。在我的浏览器中,endDate>=startDate
的结果为false。要回答名义上的问题,可以。查看您真正问题的答案。这将与OP中的代码有完全相同的问题。这将与OP中的代码有完全相同的问题。