ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

js字符串和数字之间的大小对比!

2022-03-21 10:02:54  阅读:93  来源: 互联网

标签:abc 数字 对比 字符串 js ASCII 比较


在进行比较时js会先将两边的类型自动转成一致再对比。

比较首先分为以下几种情况:

1、纯数字之间比较:1<2  //true;(不解释)

 

2、纯数字与数字型字符串之间比较:222 <  '30'  //false  (此时数字型字符串会转成纯数字再与前面的纯数字比较,即222与30相比谁大?当然22喽!)

ps:这里为啥要把字符串转成数字,而不是把数字转成字符串再做对比?

比如将上面的数字222转‘222’再与'30'对比,那结果就是true了!(字符串做对比,字符串对比接下来会说。),可是实际操作却不是这样。。。

但javascript比较奇怪,相比将数字转成字符串,js会优先选择将字符串转成数字。(如果数字转成字符串,那字符串之间再进行字符编码对比,而之间将字符串转成数字就直接对比了)

 

3、数字与其他字符串之间的比较:222 < 'abc'  //false

这种情况下,js会将字符串转成数字,但abc不能转为数字,js转数字的方法:parseInt('abc'),如果解析不到数字,则将返回一个NaN的值。所以'abc’转换的结果永远

是NaN,所以结果永远是false(即222 > 'abc'  //false)。

ps:这时候又想问:为什么不能将abc转成ASCII码再对比?

那么js就要解释了:因为222是数字,不是字符串,不能转ASCII码,js本着一视同仁的态度就是这个结果了。。。(js有自己的基本准则,它按自己的基本法走)

 

4、数字型字符串之间比较:'222'<'30'  //true;    '5'>'10' //true

这种比较为ASCII码比较,依次取每个字符,字符转为ASCII码进行比较,ASCII码先大的即为大;因为第一个字符3比2大所以后面就不用考虑了;

 

5、其他字符串之间比较:'d'>'abc' //true;

字符串比较为ASCII码比较,d的ASCII码为100,而a的ascii码为97所以结果为true;

总结一下:

1、纯字符串比较,转换成ASCII码在进行比较;

2、纯数字和数字字符串相比较,则将字符串数字隐式转换成数字再进行比较;

3、纯数字和非数字字符串比较,都返回false;

 

    转自:https://www.cnblogs.com/jennydtt/p/10138257.html

标签:abc,数字,对比,字符串,js,ASCII,比较
来源: https://www.cnblogs.com/javalinux/p/16033416.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有