if ('11' < '3') alert('true');
很明顯,它不是通過長度來比較它們,而是通過編碼來代替它們。但是,我不明白它是如何工作的。我需要一些解釋:-)爲什麼字符串「11」少於字符串「3」?
if ('11' < '3') alert('true');
很明顯,它不是通過長度來比較它們,而是通過編碼來代替它們。但是,我不明白它是如何工作的。我需要一些解釋:-)爲什麼字符串「11」少於字符串「3」?
字符串按字符進行比較,直到它們不相等或者沒有任何字符需要比較。 '11'的第一個字符小於'3'的第一個字符。
> '11' < '3'
true
> '31' < '3'
false
> '31' < '32'
true
> '31' < '30'
false
如果我們使用字母的話,因爲b
不低於a
少,abc
不低於aaa
少,但由於c
小於d
,abc
小於abd
。
> 'abc' < 'aaa'
false
> 'abc' < 'abd'
true
'1' < '3'
由於第一個字符是「最重要的字符」(而不是這個術語有任何意義)。任何以下字符將不會被比較。
我猜OP可能不知道ASCII。因此,我認爲如果包含一個排序的字符列表可能會有所幫助。這裏是:[ASCII](http://en.wikipedia.org/wiki/ASCII)。 – Haozhun
它比較由每個字符,以下將false
:
if ('41' < '3') alert('true');
由於4
不小於3
。所以基本上你的比較歸結爲:
if ('1' < '3') alert('true'); // true
默認情況下,JavaScript會比較兩個字符串的每個字符的序數值;就像如何strcmp()
作品C.
要做比較的工作,你可以一邊投以一個數字來告訴你解釋數值比較用心:
Number('11') < '3' // false
+'11' < '3' // false, using + to coerce '11' to a numeric
'11' < Number('3') // false
'11' < +'3' // false
在許多編程語言的字符串進行比較作爲lexicographically。你可以檢查Alphabetical order
它被視爲字符串比較。所以1 < 3(兩個字符串的第一個字符)然後字符串11在字符串3之前
是的。字符串比較大多按字母順序完成。 – jpaugh
只是一個簡單的說明:注意小便和大便。大便器出現在小便器之前。例如:''abc'<'Abd'// false' – viery365