在使用JavaScript中,我们常常知道比较两个英文字符串是根据字符本身的ASCII码的大小,从左往右进行比较(很多教程上都这么说)。但是对于这样一种说法我认为不合适,毕竟字符串中不仅有英文,而且有中文,对于中文的比较也可以的,但是ASCII码却不能表示中文。

因此,我想JavaScript的字符串比较应该换成另一种说法,那就是按照字符的Unicode码的大小从左至右进行比较。当然为何是Unicode码而不是其它的编码,我想这是跟我们页面的编码有关吧,但是到底是不是这样,我也没有查到相关的信息,如果你有这方面的资料,请告知于我,不胜感激。

证明我上面所说的一个测试程序如下:页面编码utf-8

<html>
<body>
<script type="text/javascript">
 var str1="Apple";
 var str2="Banana";
 document.write(str1>str2);
 document.write("<br />");
 /*
 执行结果为:FALSE,因为JavaScript中字符串的比较是按照字符的ASCII码,从左至右进行比较的。
 但是对于中文比较呢?
 由于中文不能使用ASCII码进行表示,但是却可以使用Unicode码表示,那么是否在进行中文字符串比较时
 是按照字符的Unicode值的大小进行比较的呢?
 如果真是这样的话,那么是否意味着所有的中文字符都比英文字符都大呢?
 */
 /*中文字符比英文字符要大*/
 var str3="中国";
 var str4="ZZ";
 document.write(str3>str4);
 document.write("<br />");
 /*执行结果为:true*/
 
 var str5="中国";
 var str6="人民";
 /*显示str5中第一个字符的Unicode值*/
 document.write(str5.charCodeAt(0));
 document.write("<br />");
 /*显示str6中第一个字符的Unicode值*/
 document.write(str6.charCodeAt(0));
 document.write("<br />");
 /*显示比较的结果*/
 document.write(str5>str6);
 document.write("<br />");
</script>
</body>
</html>
执行结果如下:
false
true
20013
20154
false

从中我们可以得到这样的一个规律:所有的中文字符都比英文字符要大!

相关文章:

  1. 选择下拉列表实现跳转!
  2. 竖向伸缩列表的做法!
  3. 给自己的页面添加复制文章内容功能!
  4. Unicode字符编码与ASCII字符编码的关系!
  5. !document.getElementById等的说明!