it-swarm.com.de

Was bedeutet das Pluszeichen in '+ neues Datum'?

Ich habe dies an einigen Stellen gesehen

function fn() {
    return +new Date;
}

Und ich kann sehen, dass es einen Zeitstempel und kein Datumsobjekt zurückgibt, aber ich kann keine Dokumentation darüber finden, was das Pluszeichen tut.

Kann mir jemand erklären?

229
Ken

das ist der + unäre Operator, der äquivalent ist zu:

function(){ return Number(new Date); }

siehe: http://xkr.us/articles/javascript/unary-add/

und in MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Unary_plus

279
kentaromiura

JavaScript ist lose geschrieben, daher führt es unter bestimmten Umständen eine Typumwandlung durch:

http://blog.jeremymartin.name/2008/03/understanding-loose-typing-in.html
http://www.jibbering.com/faq/faq_notes/type_convert.html

Andere Beispiele:

>>> +new Date()
1224589625406
>>> +"3"
3
>>> +true
1
>>> 3 == "3"
true
41
Jonny Buchanan

Ein JavaScript-Datum kann als Zeichenfolge geschrieben werden:

Do 10 Sep 2015 12:02:54 GMT + 0530 (IST)

oder als Nummer:

1441866774938

Daten als Zahlen geschrieben, gibt die Anzahl der Millisekunden seit dem 1. Januar 1970, 00:00:00 an.

Wenn Sie zu Ihrer Frage kommen, scheint es, dass durch das Hinzufügen von '+' nach dem Zuweisungsoperator '=' das Datum in den gleichen Zahlenwert umgewandelt wird.

dasselbe kann mit der Funktion Number () erreicht werden, wie Number (new Date ()).

var date = +new Date(); //same as 'var date =number(new Date());'
6
Dev

Hier ist die Spezifikation bezüglich des Operators "unäres Hinzufügen". Ich hoffe es hilft...

5
Pablo Cabrera

Nur um ein paar Infos zu geben:

Wenn Sie sich erinnern: Wenn Sie den Zeitunterschied zwischen zwei Datumsangaben ermitteln möchten, gehen Sie einfach wie folgt vor:

var d1 = new Date("2000/01/01 00:00:00"); 
var d2 = new Date("2000/01/01 00:00:01");  //one second later

var t = d2 - d1; //will be 1000 (msec) = 1 sec

typeof t; // "number"

wenn Sie nun den Typ von d1-0 überprüfen, ist dies auch eine Zahl:

t = new Date() - 0; //numeric value of Date: number of msec's since 1 Jan 1970.
typeof t; // "number"

dass + auch das Datum in Zahl umwandelt:

typeof (+new Date()) //"number"

Beachten Sie jedoch, dass 0 + new Date()nicht ähnlich behandelt wird! es wird als String verkettet:

0 + new Date() // "0Tue Oct 16 05:03:24 PDT 2018"
2
S.Serpooshan

Es ist ein näres Addieren Operator und wird auch für die explizite Zahlenkonvertierung verwendet. Wenn Sie also +new Date() aufrufen, wird versucht, den numerischen Wert dieses Objekts mit valueOf() zu ermitteln wir bekommen einen String von toString()

new Date().valueOf() == (+new Date)  // true
1
Raghavendra