zoukankan      html  css  js  c++  java
  • 关系运算符<,<=,>,>=用于对字符串的比较

    对两个字符串运用关系运算符,许多人认为小于表示“在字母顺序上靠前”,大于表示“在字母顺序上靠后”,但是事实并非如此。对于字符串,第一个字符串中的每个字符的代码都会和第二个字符串中对应位置上的字符的代码进行比较。完成这种比较操作后,会返回一个Boolean值。问题在于大写字母的代码都小于小写字母的代码,这就意味着可能会遇到下面这种情况:

    var bResult = "Brick" < "alpha";

    alert(bResult);// output:true;

    在这个例子中,字符串“Brick”小于字符串“alpha”,因为字母B的字符代码是66,字母a的字符代码是97。要强制得到按照字母顺序比较得到的结果,必须把两个运算数转换成相同的大小写形式(全大写或者全小写)然后在尽行比较。例如:

    var bResult = "Brick".toLowerCase() < "alpha".toLowerCase();

    alert(bResult);// output:false;

    另一种棘手的情况发生在比较两个字符串形式的数字的时候,例如:

    var bResult= "23" < "3";

    alert(bResult);//output:true;

    因为这两个运算时都是字符串,因此将比较他们的字符代码(”2“的字符代码是50;”3“的字符代码是51)因此输出true;

    不过把上述例子中的其中一个运算符改为数字的时候,那么就有趣了,例如:

    var bResult= "23" < 3;

    alert(bResult);//output:false;

    如论合适比较一个字符串数字和一个数字,ECMAscript都会把字符串的数字转化为数字,然后在比较大小。

    不过,如果字符串不能被转化成数字的时候,又该怎么办呢?

    var bResult= "a" < 3;

    alert(bResult);//output:false;

    字母a不能换转成有意义的数字,不过调用parseInt()方法,返回的是NaN,根据规则,任何包含NaN的关系运算都要返回false,因此这段代码也输出false;

    var bResult= "a" < 3;

    alert(bResult);//output:false;

    通常,如果小于运算的两个值返回false,那么大于等于运算必须返回true;不过如果某个数字是NaN,则情况并非如此。

    千里之行,始于足下
  • 相关阅读:
    JQuery中的id选择器含有特殊字符时,不能选中dom元素
    解决Mac下MySQL登录问题
    Mac 安装mysql
    禁止chrome浏览器自动填充表单的解决方案
    Eclipse 编译错误 Access restriction: The type 'JPEGCodec' is not API (restriction on required library 'C:Program FilesJavajre7lib t.jar')
    羊皮纸月亮计划
    ActionSupport.getText()方法
    linux入门经验之谈
    tomcat设置默认启动项
    网页设置下载apk
  • 原文地址:https://www.cnblogs.com/ajieyingqulvxing/p/4419582.html
Copyright © 2011-2022 走看看