問題

為了要取得某個月份的起始和結束時間
一開始可能會這樣寫:

1
2
start = currentDate.startOf('day');
end = currentDate.endOf('day');

但是輸出變成這樣,以一月為例:

1
2
2020-01-31
2020-01-31

解決方式

找了好久,最後終於發現他們接的都是同一個值,呼叫方法只是改變同一個值的狀態
因此複製一份物件就解決了:

1
2
start = currentDate.startOf('day');
end = start.clone().endOf('day');

原因

因為currentDate.startOf(‘day’)和currentDate.endOf(‘day’)只是把位置assign到start和end,並非是傳值。
呼叫clone方法可以解決傳址不傳值的問題,複製一個新的物件,assign給新的變數。