Hinweis: In einigen Fällen after = after-0
anderes Verhalten ruft als after = after+0
. Ich habe es mit Daten bemerkt.
Das in Chrome getestet V39 nur:
var date = new Date(2000,0,1);
date += date; //"Sat Jan 01 2000 00:00:00 GMT+0000 (GMT Standard Time)Sat Jan 01 2000 00:00:00 GMT+0000 (GMT Standard Time)"
var date2 = new Date(2000,0,1);
date2 + 0; //"Sat Jan 01 2000 00:00:00 GMT+0000 (GMT Standard Time)0"
date2 - 0; //946684800000
date2 * 1; //946684800000
Ich weiß nicht, was in der JS-Spezifikation definiert ist, aber mit Terminen, weil sowohl das Datum und die Nummer kann auf einen String gegossen werden, und der + Operator arbeitet an einer Zeichenkette, dann geht Chrome mit einer Zeichenkettenverkettung. Da der Operator - kein String-Äquivalent hat, wird auf den Zahlenvergleich zurückgegriffen.
Ich habe dies nützlich gefunden, wenn Daten in Zahlen für Vergleiche
Die dritte Option ist bei weitem die langsamste: http://jsperf.com/testing-number-coercion – Boldewyn