关系运算符()
当两个操作数都是数字时,它们会被正常比较:
1 < 2 // true
2 <= 2 // true
3 >= 5 // false
true < false // false (implicitly converted to numbers, 1 > 0)
当两个操作数都是字符串时,它们按字典顺序进行比较(根据字母顺序):
'a' < 'b' // true
'1' < '2' // true
'100' > '12' // false ('100' is less than '12' lexicographically!)
当一个操作数是一个字符串而另一个是一个数字时,该字符串在比较之前转换为一个数字:
'1' < 2 // true
'3' > 2 // true
true > '2' // false (true implicitly converted to number, 1 < 2)
当字符串是非数字时,数字转换返回 NaN
(非数字)。与 NaN
相比,总会返回 false
:
1 < 'abc' // false
1 > 'abc' // false
但是在将数值与 null
,undefined
或空字符串进行比较时要小心:
1 > '' // true
1 < '' // false
1 > null // true
1 < null // false
1 > undefined // false
1 < undefined // false
当一个操作数是一个对象而另一个是一个数字时,该对象在比较之前被转换为一个数字。所以 null
是特例,因为 Number(null);//0
new Date(2015)< 1479480185280 // true
null > -1 //true
({toString:function(){return 123}}) > 122 //true