js数字字符串大小比较

数字字符串比较如下:

  1. = '10000000'
  2. = '5000000'

a>b输出false a-b>0输出true
为什么是这个结果

阅读 14.5k
5 个回答

这是JavaScript中隐式转换的关系,首先在比较的时候,二者是按照string的形式进行比较的,那么比较第一位的时候,1 < 5,直接返回false,而 a - b会把两个数转成number类型进行比较,转换完之后输出就是true。可以仔细看看隐式转换这一块。

a>b是进行了字符串比较,而a-b>0是先进行了隐式数据转换,这时候类型已经变成number类型了。 关于-减号的隐式数据转换已可以搜索一下,网上有很多的介绍,包括JavaScript的教程上也是有的

String类型比较大小是先比较第一位的值,如果相等那么向后比较;a-b表达式会将String强制转换成Number类型

a>b是两个字符串在直接做比较,而a-b,遇到减号,a和b会先做数据转换为nuber类型。建议看看:你不懂js 这本书

a= '10000000'
b= '5000000'
a>b输出false: 因为此时比较的还是字符串,字符串类型比较大小是先比较第一位的值,比较第一位的时候1<5,所以false
a-b>0输出true : '-'把a和b隐式转换成了number类型,此时比较的就是两个数字10000000和5000000了,所以true

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题