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

mar*_*ark 1 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));
Run Code Online (Sandbox Code Playgroud)

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

有任何想法吗?

hai*_*770 5

由于Date它不是原始类型,因此通过引用传递.这意味着在将其推入结果数组之前需要克隆start:

dateArray.push(new Date(start));
Run Code Online (Sandbox Code Playgroud)

否则,start数组中的变量和新推送的元素仍将引用相同的值.

MDN