JavaScript难题:初始化两个具有相同值的日期变量,但结果它们表示不同的日历日期

JavaScript难题:初始化两个具有相同值的日期变量,但结果它们表示不同的日历日期,javascript,angular,typescript,Javascript,Angular,Typescript,请看一看我的截图,我显然遗漏了一些东西 变量tmpStart和itemDate由相同的数值初始化,但这表明它们具有不同的日历日期 start=1490683782833->tmpStart=“2017年3月26日星期日16:51:55 GMT+0200(CEST)” item=1490683782833->itemDate=“2017年3月28日星期二08:49:42 GMT+0200(CEST)” 谢谢你的建议 每次使用new date()时,您都在创建不同的date实例,因此它们会有所

请看一看我的截图,我显然遗漏了一些东西

变量tmpStartitemDate由相同的数值初始化,但这表明它们具有不同的日历日期

  • start=1490683782833->tmpStart=“2017年3月26日星期日16:51:55 GMT+0200(CEST)”
  • item=1490683782833->itemDate=“2017年3月28日星期二08:49:42 GMT+0200(CEST)”


谢谢你的建议

每次使用new date()时,您都在创建不同的date实例,因此它们会有所不同

 let tmpStart = new Date(start);
 start += itemSize; // start changed

 // item === start (changed value)
 let itemDate = new Date(item);

 // therefore
 tmpStart != itemDate
这就是为什么


接受函数式编程。不要做作业。:)(
start+=itemSize

不要对代码使用屏幕截图。没有人可以尝试,因为没有人想重新键入。您正在设置start+=itemSize,并询问为什么itemDate与tmpStart不同?不,我是问为什么tmpStart和itemDate在由start和item初始化时表示不同的日历日期,它们具有相同的数值。请将代码缩减为a,并将代码作为文本而不是图像放置在问题本身中。为了澄清上述问题:您在使用start初始化tmpStart后添加itemSize以启动。如果您首先进行加法,那么tmpStart将==第一次循环迭代时的itemDate是,但我正在使用相同的数值初始化它,因此它们应该表示相同的日历日期。