美文网首页
JavaScript字符串比较大小:为什么'10'

JavaScript字符串比较大小:为什么'10'

作者: almon123 | 来源:发表于2017-02-15 17:30 被阅读516次

    之前在刷codewar的时候遇到了这个问题,后来在segmentfault上也看到人提及,觉得挺有趣,记录一下。

    为什么'10' < '2'?

    可以在控制台里输入试一下,确实'10' < '2'返回值是true
    多试几次其他情况后就能发现初步规律。

    '10' < '2'
    '1' < '2'
    '3' > '2'
    '19999' < '2'
    '30' > '200'
    

    很明显,数字字符串的比较是按照字符对应位置一个个比较,由于'10'的第一位是1,比‘2’的第一位2小,所以'10' < '2'。
    但在对应位置比较时,其实并不是按照数字大小比较的。
    意思是,‘1’ < '2' 并不是因为1 < 2。
    对应位置比较实际是比较它们的字符编码的大小,你可以通过charCodeAt(0)查看一个字符的编码

    '1'.charCodeAt(0) // 49
    '2'.charCodeAt(0) // 50
    

    因为49 < 50, 所以‘1‘ < '2'
    而刚好0-9在字符集中是按照顺序排下来的,所以从表面上来看,就是数字本身的大小关系了。

    相关文章

      网友评论

          本文标题:JavaScript字符串比较大小:为什么'10'

          本文链接:https://www.haomeiwen.com/subject/jkiqwttx.html