显然,以下javascript打印为TRUE。
var s = "hippo";
var t = "Hippo";
var test = (s > t);
document.write(test ? "TRUE" : "FALSE");
是什么让“hippo”比“Hippo”更大? H的ASCII值大于h的ASCII值。
javascript字符串比较的逻辑基础是什么?
答案 0 :(得分:2)
它不是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);
答案 1 :(得分:1)
在字典排序中,我们通常希望小写字母以大写字母显示,以便首先显示专有名称。我认为不一定是这样;这只是英语使用者AFAIK的惯例。字符串中的“X大于Y”表示“X在Y之后显示在字典中”。所以这并不意外。