浅谈字符串的比较

由工作中的偶然引发的深思,js的(> <)比较到底是怎么执行的

起因

今天工作的时候碰到一个问题在判断用户要花费的金额跟用户钱包里的金额时,代码一直不按我设置好的路线执行,调试一番,发现是判断出了问题。

出现的问题是这样的

1
2
3
4
5
var price=document.getElementById('price').value; //'500'
var balance=document.getElementById('balance').value; //"177550.00"
if(price > balance){
... code....
}

很明显的可以看到这个条件是不会通过的,问题就是在这里条件通过了。而且我记忆中,在javascript中,比较是会自动转义的。
比如:

1
2
3
if('85'>50){
... code ...
}

那么这里是肯定会执行的,因为在javascript中,会自动把字符串’85’转义成为数字85,然后进行比较、
那么字符串的比较是怎么回事呢,它是怎么运行的

字符串与字符串相比

如果字符串长度是0的情况,就可以直接比较出大小。
最后才是关键,按每个字符的 charCode 大小进行比较,直到分出大小为止。
在这里就是

1
2
price[0]="5";
balance[0]='1';

很明显的就看出来

1
price[0]>banlance[0]

如果他们相等,那么就比较下一个。差不多就重复这样的步骤进行对比,直到分出大小或者全部对比结束为止。而不简单的比较字符串长度。

概括

一句话概括就是按照字典序进行对比

坚持原创技术分享,您的支持将鼓励我继续创作!