var timeInMs = Date.now();
pro MDN
vs.
var timeInMs = new Date(optional).getTime();
pro MDN .
Gibt es einen Unterschied zwischen den beiden, abgesehen von der Syntax und der Möglichkeit, das Datum (nicht auf das aktuelle) über optional in der zweiten Version einzustellen?
Date.now () ist schneller - sehen Sie sich den jsperf an
Antworten:
Diese Dinge sind die gleichen ( semantisch bearbeiten ; Leistung ist etwas besser mit
.now()
):Der Zeitwert einer bereits erstellten
Date
Instanz wird jedoch zum Zeitpunkt ihrer Erstellung eingefroren (oder zu welchem Zeitpunkt / Datum auch immer). Das heißt, wenn Sie dies tun:und dann eine Weile warten, ein nachfolgender Aufruf von
now.getTime()
zeigt die Zeit an dem Punkt an, an dem die Variable gesetzt wurde.quelle
dateObj.setTime(Date.now())
) oder jedes Mal neue Datumsobjekte zu erstellen, wenn Sie etwas Asynchrones tun, das aufDate
Methoden zugreifen muss (z. B.dateObj.getMinutes()
)?Sie sind effektiv gleichwertig, aber Sie sollten verwenden
Date.now()
. Es ist klarer und ungefähr doppelt so schnell.Bearbeiten: Quelle: http://jsperf.com/date-now-vs-new-date
quelle
Date(optional).getTime();
, dass Speicherplatz zugewiesen werden muss, um ein neues Datumsobjekt abzurufen, bevor die aktuelle Uhrzeit abgerufen werden kann?Wenn Sie dies tun
(new Date()).getTime()
, erstellen Sie ein neues Datumsobjekt. Wenn Sie dies wiederholt tun, ist es ungefähr 2x langsamer als Date.now ()Das gleiche Prinzip sollte für
Array.prototype.slice.call(arguments, 0)
vs.[].slice.call(arguments, 0)
quelle
Ja, das ist richtig; Sie sind effektiv gleichwertig, wenn die aktuelle Zeit verwendet wird.
quelle
Manchmal ist es vorzuziehen, eine Zeiterfassungsvariable in einem Date-Objektformat zu behalten, anstatt nur eine Anzahl von Millisekunden, um auf die Methoden von Date zuzugreifen, ohne sie erneut zu instanziieren. In diesem Fall gewinnt Date.now () immer noch über neues Date () oder ähnliches, allerdings nur um etwa 20% auf meinem Chrome und um einen winzigen Betrag auf IE.
Siehe meine JSPERF auf
vs.
http://jsperf.com/new-date-vs-settime
quelle