Ich habe mit JSFiddle rumgespielt, um this Problem in FreeCodeCamp zu lösen. Wenn ich das Datum als String (das heißt, keine "neuen"):Warum ist (new Date() == new Date()) falsch, aber (Date() == Date()) ist wahr?
Fall 1:
function isSameDay (dtFrom, dtTo) {
return dtFrom == dtTo
}
let today = Date()
let tomorrow = Date()
console.log(today)
console.log(tomorrow)
console.log(isSameDay(today, tomorrow))
isSameDay kehrt wahr. Jedoch, wenn ich Datum als Konstruktor (mit "neuen"):
Fall 2:
function isSameDay (dtFrom, dtTo) {
return dtFrom == dtTo
}
let today = new Date()
let tomorrow = new Date()
console.log(today)
console.log(tomorrow)
console.log(isSameDay(today, tomorrow))
isSameDay gibt falsche. Allerdings, wenn ich fügen Sie den unären Operator "+" (!):
Fall 3:
function isSameDay (dtFrom, dtTo) {
return dtFrom == dtTo
}
let today = + new Date()
let tomorrow = + new Date()
console.log(today)
console.log(tomorrow)
console.log(isSameDay(today, tomorrow))
isSameDay kehrt wahr. Ich verstehe, dass Fall 1 und Fall 3 wahr sind, weil sie nur die gleichen Strings und die gleichen Millisekundenwerte sind.
Warum gibt Fall 2 zurück false?
Zwei Instanzen des gleichen Konstruktor sind sie noch andere, auch wenn sie exakt die gleichen Eigenschaften haben, da sie unterschiedliche Objekte sind. Wenn Sie Datumsangaben vergleichen möchten, wandeln Sie sie in Millisekunden um und berechnen Sie diese Ganzzahl. Außerdem gibt sicne new Date() den aktuellen Zeitstempel zurück, es könnte einen Millisekundenunterschied zwischen zwei neuen Date() Aufrufen geben. – Shilly
weil nicht einmal '({}) == ({})' ... aber 'Date()' gibt einen String zurück, also wird es == die meiste Zeit ... außer wenn die Sekunden über –
'tickt Wirf sie in Millisekunden "... aber ab und zu' new Date(). getTime() == new Date(). getTime() 'ist falsch ... weil eine Millisekunde zwischen den beiden Aufrufen von new umkehren kann Datum() ... weniger wahrscheinlich mit 'Date() == Date()' - weil es eine Zeichenkette mit 1 Sekunde Auflösung ist ... aber immer noch kann es falsch sein –