最新消息:从今天开始,做一个有好习惯的人。

js字符串大小比较

前端 迷路的老鼠 2251浏览 1评论

都知道字符串的大小比较是根据字符串的asc码进行比较的,但是如何比较呢?

1
2
3
4
5
6
7
var a = 'a21';

var b = 'b12';

var c = 'a12';

var d = 'a';

这三个字按照大小来比较应该是:b > a > c > d。

何解?

字符串比较时先将字符串分割,如a,分割后为{a,2,1}。比较时先对第一个字符进行比较。

如果a和b比较,那么a[0] < b[0],即返回a<b。

如果a和c比较,那么a[0] = c[0],然后进行第二个字符比较,a[1] > c[2],即返回a > c。

那么延伸一下,

1
2
3
var a = '1';

var b = '10';

答案是什么? a < b。

如果,

1
2
3
var a = '2';

var b = '10';

答案又是什么呢? a > b。

好了,大概了解了,我们再来看看颠覆三观的另外一个比较。

1
2
3
var a = 1;

var b = '01';

猜猜看,结果如何?  结果是a = b。

如果这样呢?

1
2
3
var a = '1';

var b = '01';

我猜很多人都迷糊了,何解? a > b。可是为什么前面的数字和字符串比较的时候是等于呢,因为咱们万能js发现比较变量里面存在数字的时候,会优先将被比较的变量也尝试转换为数字,进行比较。当然是尝试,如果被比较变量不能被转换成数字呢?

如:

1
2
3
var a = 1;

var b = '0b';

这是无法比较的,当被比较变量无法转换成字符串时,不会将比较的变量转换成字符串去比较,和字符串转数字不一样,这个过程不可逆。

附ascii查询:http://ascii.911cha.com/

js

js

转载请注明:迷路的老鼠 » js字符串大小比较

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (1)

  1. 清明都去拜祭了,我拿荧光棒来捧捧场
    wa10年前 (2015-04-05)回复