Nota: In alcuni casi after = after-0
invoca un comportamento diverso rispetto after = after+0
. L'ho notato con le date.
Questo è testato in Chrome V39 solo:
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
Non so quello che viene definito nelle specifiche JS, ma con date, perché sia la data e il numero può essere lanciato in una stringa, e l'operatore + lavora su una stringa, quindi Chrome va con una concatenazione di stringhe. Poiché l'operatore - non ha equivalenti in termini di stringa, torna al confronto dei numeri.
ho trovato questo utile quando costringere date in numeri per i confronti
La terza opzione è di gran lunga la più lenta, tuttavia: http://jsperf.com/testing-number-coercion – Boldewyn