Lưu ý: Trong một số trường after = after-0
gọi hành vi khác nhau hơn after = after+0
. Tôi đã nhận thấy nó với ngày tháng.
này được thử nghiệm trong Chrome V39 chỉ:
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
Tôi không biết những gì được định nghĩa trong spec JS, nhưng với thời gian, bởi vì cả ngày và số lượng có thể được đúc thành một chuỗi, và toán tử + hoạt động trên một chuỗi, sau đó Chrome đi với một chuỗi nối. Bởi vì toán tử - không có chuỗi tương đương, nó rơi trở lại so sánh số.
Tôi đã thấy điều này hữu ích khi ép buộc ngày vào số để so sánh
Tùy chọn thứ ba là chậm nhất, tuy nhiên: http://jsperf.com/testing-number-coercion – Boldewyn