Like the == operator, the comparison operator (>, <, >=, <=) can convert objects into string or number before comparing -- for number, compare the size of the value; for string, compare the order in which characters appear in the encoding table. Unlike the == operator, == will convert the Date object into string and then compare it, while the comparison operator will convert all objects including Date into number and then compare it. The rules for comparative judgment are as follows:
1. If there are objects on both sides of the operator, convert them to number; if they cannot be converted to number, convert them to string.
2. After conversion, if both sides of the operator are string, string comparison is performed; otherwise, as long as a number appears on one side, numerical comparison is performed.
3. If NaN appears on both sides of the operator, return false.
4.0 is equal to -0.
experiment
The code copy is as follows:
//In comparison, Date object is converted to number
var d = new Date();
var s1 = "Thu Mar 27 2008 14:57:11 GMT+0800 (CST)";
var s2 = "Thu Mar 27 2099 14:57:11 GMT+0800 (CST)";
var n1 = d.valueOf() - 1000;
var n2 = d.valueOf() + 1000;
console.log(d > s1);//false, d is converted to number, and that number is further converted to string. It is a string comparison here.
console.log(d > s2);//false
console.log(d > n1);//true
console.log(d > n2);//false
console.log("11" > 3);//true