【问题标题】:Confusion with comparision opertaor与比较运算符混淆
【发布时间】:2019-12-29 14:07:08
【问题描述】:

请帮助我了解这是如何工作的:

"1" > "01" returns true

但是

1 > 01 returns false

【问题讨论】:

  • 嗯,从 A 到 Z 排序数字并不能呈现直观的结果 ;-)
  • 1 === 01 的答案在这里对你有用。

标签: javascript string numbers comparison-operators


【解决方案1】:

比较运算符总是将值与操作数的相应位置进行比较,因此在第一个示例中

  "1" > "01"
   |     ||
   |     ||________________  2nd ( 2nd operand )
   |     __________________  1st ( 2nd operand )
   _________________________ 1st ( 1st operand )

很明显1 > 0 是真的

在第二个示例中,值是数字,所以前导 0 没有任何意义,所以它实际上与

1 > 1 which is clearly false

JS 不会在任何数字前保留前导零

let one = 00001
console.log(one)
console.log(000002)

【讨论】:

    【解决方案2】:

    > 运算符将 lexically compare strings, 进行数字比较。

    因为1 大于0,所以它会返回true。

    这与比较"B""AB" 非常相似:
    因为"A""B" 之前,所以"B" > "AB"

    【讨论】:

    • 我会改写--">" 将比较给它的任何东西;如果它太字符串,它将是一个词法比较,如果两个数字,数字。
    猜你喜欢
    • 2018-04-01
    • 1970-01-01
    • 2017-01-24
    • 2020-10-25
    • 1970-01-01
    • 1970-01-01
    • 2018-03-31
    • 1970-01-01
    相关资源
    最近更新 更多