javascript - 为什么第一个日期没有被添加到数组中

标签 javascript

为什么第一个日期没有被添加到这个数组中?

function createArrayOfDates(start, end) {
    var dateArray = [];

    while(start < end) {
      dateArray.push(start);
      start = new Date(start.setDate( start.getDate() + 1 ));
    }

    return dateArray;
}

start = new Date(2015, 01, 01);
end = new Date(2015, 01, 05);
console.log(createArrayOfDates(start, end));

我期望的输出应该包括第一个日期 (2015/01/01),但数组从第二个开始。

有什么想法吗?

最佳答案

因为 Date 不是原始类型,所以它是通过引用传递的。这意味着您需要克隆 start 的值,然后再将其插入结果数组:

dateArray.push(new Date(start));

否则,start 变量和数组中新插入的元素仍将引用相同的值。

参见 MDN

关于javascript - 为什么第一个日期没有被添加到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27774772/

相关文章:

javascript - css 样式是否有等效的 eval?

javascript - 使用 loader 找不到 webpack 引用图像

javascript - 获取配置 JSON 的主干和最佳实践

javascript - jQuery 如何设置绑定(bind)顺序

javascript - 如何在Grails中呈现包含HTML中包含源文件的HTML文件?

javascript - 为什么我必须导出const?

javascript - 我如何将日期字段设置为等于另一个代表月份值的日期+整数值

javascript - 在进入下一步之前强制 JavaScript 完成动画

javascript - 如何在JavaScript中从二维数组中过滤相同的子数组

javascript - Nodejs : execute some instructions in an asynchronous way