2009-12-30 17 views

Antwort

26

Nicolás und Brian Januar geben richtig, aber wenn Sie neugierig sind, wie es funktioniert, ist +new Date(); entspricht (new Date()).valueOf();, weil der unary + operator den Wert von seinen Operandenausdruck erhält und ihn dann ToNumber konvertiert.

Sie könnten eine valueOf Methode für jedes Objekt hinzufügen und den unären Operator + verwenden, um eine numerische Darstellung des Objekts zurückzukehren, z.B .:

var productX = { 
    valueOf : function() { 
    return 500; // some "meaningful" number 
    } 
}; 

var cost = +productX; // 500 
+2

+1, gute Erklärung. –

+1

Da 'valueOf()' eine Zahl zurückgibt, ist der unary + -Operator im obigen Beispiel grundsätzlich nicht notwendig. Ich denke, es wäre sinnvoller, wenn valueOf() "500" zurückgeben würde. –

+1

@Darrel, sehen Sie sich andere Code Beispiel als ich bin? Ich sehe keine Änderungen an diesem Beitrag, daher scheint Ihr Kommentar seltsam und irrelevant zu sein, aber fast so, als hätte der Beitrag nach dem Kommentar bearbeitet werden können. – Breton

10

Ich denke, dass der unäre Plus-Operator, der auf irgendetwas angewendet wird, dazu führen würde, dass es in eine Zahl umgewandelt wird.

+0

Hm, wandeln sie + immer den Ausdruck in eine Reihe? + ist ein gültiger Operator für Strings und Zahlen. 1 * wird normalerweise verwendet, um ein Argument in eine Zahl zu zwingen. – Ernelli

+2

@Ernelli, + ist nur ein gültiger Zeichenfolgenoperator, wenn er als binärer Operator verwendet wird. Der unäre + Operator gilt nur für Zahlen, also wird er genauso konvertiert wie 1 *. –

+1

Ernelli: Siehe CMS Antwort unter http://stackoverflow.com/questions/1983040/what-does-the-new-mean-in-javascript/1983109#1983109. Unäres '+' scheint seinen Operand immer in eine Zahl umzuwandeln, während das binäre '+' für Strings verwendet werden kann. –

9

Sie der Date() in eine ganze Zahl konvertiert, können Sie die aktuelle Anzahl der Millisekunden seit dem 1., sind 1970

+0

5 Sekunden zu spät, ich habe für Nicolas abgestimmt ;-) –

+1

Mein Browser stürzte während des Schreibens ab! Ich musste einen neuen Browser starten ... –

+0

@Brian IE wird das von Zeit zu Zeit tun. ;) –