顯然,下面的javascript打印爲TRUE。JavaScript字符串比較的基礎是什麼?
var s = "hippo";
var t = "Hippo";
var test = (s > t);
document.write(test ? "TRUE" : "FALSE");
什麼讓「河馬」比「河馬」大? H的ASCII值大於h的ASCII值。
什麼是JavaScript字符串比較的邏輯基礎?
顯然,下面的javascript打印爲TRUE。JavaScript字符串比較的基礎是什麼?
var s = "hippo";
var t = "Hippo";
var test = (s > t);
document.write(test ? "TRUE" : "FALSE");
什麼讓「河馬」比「河馬」大? H的ASCII值大於h的ASCII值。
什麼是JavaScript字符串比較的邏輯基礎?
在字典順序,我們一般要小寫來大寫後,這樣的專有名詞出現第一。我想這不一定是這樣的;這只是英語使用者AFAIK的慣例。字符串中的「X大於Y」表示「X在Y後出現在字典中」。所以這並不意外。
這不是ASCII,但UTF-16:
ECMAScript的源文本表示爲Unicode字符編碼,3.0或更高版本的字符序列。正如Unicode技術報告#15中所描述的那樣,文本預計將被規範化爲Unicode規範化表單C(規範組合)。遵從ECMAScript實現並不需要執行任何文本規範化,或者表現得好像他們自己正在執行文本規範化一樣。就本規範而言,假定ECMAScript源文本是一個16位代碼單元序列。這樣的源文本可能包含16位代碼單元的序列,這些代碼單元不是有效的UTF-16字符編碼。如果實際源文本以16位代碼單元以外的形式編碼,則必須按照首先轉換爲UTF-16的方式進行處理。
相關搜索:
'h'.charCodeAt(0);
'H'.charCodeAt(0);
「*它不是ASCII碼,但是UTF-16 *」 - 爲什麼相關?兩者都使用相同的字符相同的代碼... – 2012-03-25 19:48:50
這是相關的,因爲OP認爲它是ASCII。 – 2012-03-25 19:50:44
問題是關於一般比較算法,而不僅僅是那個特定的情況。 – user123444555621 2012-03-25 19:52:33
任何小寫字母的ASCII值是大寫字母加上32的ASCII值。「H」是72,而「h」是104! – Gabe 2012-03-25 19:42:46
「* H的ASCII值大於h的ASCII值*」 - 再次檢查... – 2012-03-25 19:44:44