今天做用户需求的时候,发现js检验出错,我从页面去了两个值进行比较大小,原意想比较两个数值的大小,因为感觉js是弱数据类型,所以直接进行了比较,类型与:
a= '10000000' b= '5000000'
a>b输出false ,如果a-b>0 则输出true
查阅资料发现,这是JavaScript中隐式转换的关系,首先在比较的时候,二者是按照string的形式进行比较的,那么比较第一位的时候,1 < 5,直接返回false,而 a - b会把两个数转成number类型进行比较,转换完之后输出就是true。
所以一般从页面上取得值之后,最好使用减法比较,或者对取得的值进行显式转换,Number(a)>Number(b).
总结:JavaScript中常用数字字符串比较
1、数字与数字之间直接比较
比较方式依据数学运算,没什么好说的。
2、数字与字符串数字之间直接比较
例如 数字5 与字符串数字'123',这种比较先将数字字符串转为纯数字,然后为纯数字间的比较
3、字符串数字与字符串数字之间直接比较
例如 ‘5’和‘123’比较,这种比较为ASCII码比较,依次取每个字符,字符转为ASCII码进行比较:‘5’>'123' ==>true
4、字符串之间直接比较
大小比较是依次取字符,字符转ASCII码,ASCII码先大的即为大;