Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript字符串比较的基本逻辑是什么?_Javascript - Fatal编程技术网

javascript字符串比较的基本逻辑是什么?

javascript字符串比较的基本逻辑是什么?,javascript,Javascript,显然,下面的javascript打印的是真的 var s = "hippo"; var t = "Hippo"; var test = (s > t); document.write(test ? "TRUE" : "FALSE");​ 是什么让“河马”比“河马”更伟大?H的ASCII值大于H的ASCII值 javascript字符串比较的基本逻辑是什么 它不是ASCII,而是UTF-16: ECMAScript源文本在Unicode字符编码版本3.0或更高版本中表示为字符序列。如Uni

显然,下面的javascript打印的是真的

var s = "hippo";
var t = "Hippo";
var test = (s > t);
document.write(test ? "TRUE" : "FALSE");​
是什么让“河马”比“河马”更伟大?H的ASCII值大于H的ASCII值

javascript字符串比较的基本逻辑是什么


它不是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);

在字典排序中,我们通常希望小写字母排在大写字母之后,以便专有名称首先出现。我想不一定是这样;这只是说英语的人的惯例。字符串中的“X大于Y”表示“X在字典中出现在Y之后”。因此这并不意外。

任何小写字母的ASCII值都是大写字母的ASCII值加上32
H
是72,而
H
是104!“H的ASCII值大于H的ASCII值。”-再次检查…“这不是ASCII,而是UTF-16”-为什么相关?两者对相同的字符都使用相同的代码……这是相关的,因为OP认为它是ASCII。问题是关于一般比较算法,而不仅仅是那个特殊的情况。@ŠimeVidas此外,面对Gabe的评论,你必须承认小写字母的数值并不总是比大写字母大32。以Š为例;它的小写版本仅大1。