之前在刷codewar的時候遇到了這個問題痹届,后來在segmentfault上也看到人提及呻待,覺得挺有趣,記錄一下队腐。
為什么'10' < '2'?
可以在控制臺里輸入試一下蚕捉,確實'10' < '2'返回值是true
多試幾次其他情況后就能發(fā)現(xiàn)初步規(guī)律。
'10' < '2'
'1' < '2'
'3' > '2'
'19999' < '2'
'30' > '200'
很明顯柴淘,數(shù)字字符串的比較是按照字符對應(yīng)位置一個個比較迫淹,由于'10'的第一位是1,比‘2’的第一位2小为严,所以'10' < '2'敛熬。
但在對應(yīng)位置比較時,其實并不是按照數(shù)字大小比較的第股。
意思是应民,‘1’ < '2' 并不是因為1 < 2。
對應(yīng)位置比較實際是比較它們的字符編碼的大小夕吻,你可以通過charCodeAt(0)查看一個字符的編碼
'1'.charCodeAt(0) // 49
'2'.charCodeAt(0) // 50
因為49 < 50, 所以‘1‘ < '2'
而剛好0-9在字符集中是按照順序排下來的诲锹,所以從表面上來看,就是數(shù)字本身的大小關(guān)系了梭冠。