關係運算子()
當兩個運算元都是數字時,它們會被正常比較:
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