簡體   English   中英

Javascript array.push方法是否同步?

[英]is Javascript array.push method synchronous?

我正在編寫一個簡單的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 < endDate) {
            arrayOfDates.push(startDate);
            startDate = new Date(startDate.setDate(startDate.getDate() + 1));
        }
    }

雖然我期望arrayOfDates的結果為[2015-07-01, 2015-07-02, 2015-07-03.... , 2015-07-10'] 結果改為[2015-07-02, 2015-07-03.... , 2015-07-10']

這是為什么? 在將變量推送到數組之前,是否以某種方式更新了var startDate 如果是這種情況,我如何確保代碼同步運行?

調用setDate() ,將更改日期。 Date原型上的所有setter函數都會使date實例發生變異。

您必須創建一個新的日期實例,然后再調用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);
        }
    }

在這里您有小提琴https://jsfiddle.net/ggqzbn6h/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM