【问题标题】:What is the cause? operators or use of strings? [duplicate]原因是什么?运算符或字符串的使用? [复制]
【发布时间】:2014-11-22 00:20:55
【问题描述】:

为什么 javascript 中的字符串会发生这种情况?

3<=255
true

但是

'3'<='255'
false

是跟操作符的关系还是字符串的使用?

【问题讨论】:

    标签: javascript string numbers operators


    【解决方案1】:

    我猜这是因为它比较了字符的 ascii 值,而 3 的 ascii 值大于 2。在字符串中,如果 1 char 为假,它会逐个字符比较 char,否则不会比较

    【讨论】:

      【解决方案2】:

      在第一种情况下,您正在比较 2 个数字,在第二种情况下,您正在比较 2 个字符串。所以它们是不同的类型,因此会产生不同的结果。

      【讨论】:

        【解决方案3】:

        两者都有。

        当对数字进行比较时,数字的值决定结果。

        当对字符串进行比较时,字符串的排序顺序决定了结果。

        字符串'255' 被认为小于字符串'3',因为它会在排序列表中排在它之前。

        【讨论】:

        • “因为它会在排序列表中排在它之前。” ---实际上恰恰相反。它会在排序列表中排在前面,因为它更小。
        • ...按字母顺序排序的列表(我们说的是字符串,而不是数字)
        • @jp-jee: '%' &lt; '&amp;'
        • @zerkms:不,不是相反,你只是在混淆事情。没有一个字符串小于另一个字符串的概念,因为它们没有可以通过这种方式进行比较的值,字符串的比较是按照它们的词法顺序进行的。
        • @zerkms:你在自相矛盾。你描述了字符串之间的顺序是如何确定的,然后你说词汇顺序与它无关。如果您查看词法顺序的含义,您会发现这正是您所说的第一条规则,它并不意味着像您想象的那样比较字母。
        猜你喜欢
        • 2021-04-16
        • 1970-01-01
        • 2012-04-19
        • 2023-03-03
        • 1970-01-01
        • 2011-04-02
        • 2017-06-09
        • 2021-03-28
        • 1970-01-01
        相关资源
        最近更新 更多