为什么“2”>“12”返回True?

问题描述 投票:0回答:1

我对比较不同类型的解释感到困惑。它指出:

当比较字符串和数字时,JavaScript 会在比较时将字符串转换为数字...比较两个字符串时,“2”将大于“12”,因为(按字母顺序)1 小于 2。

https://www.w3schools.com/js/js_comparisons.asp

此外,另一个消息来源指出“12”< "5"

逻辑是比较最左边的数字,而忽略其右边的所有数字吗?所以这实际上不是 2 vs 12,而只是 2 vs 1,同样也不是 12 vs 5,而是 1 vs 5?

javascript types operators
1个回答
0
投票

因为您不是将字符串与数字进行比较,而是将字符串与另一个字符串进行比较。在这种情况下,js 使用字典顺序(https://en.wikipedia.org/wiki/Lexicography_order)进行比较。因此,“2”(ascii 代码 50)大于任何以代码小于 50 的字符开头的字符串。“1”字符 ascii 代码有 49,因此“2”大于“1”。因此,无论“1”是否继续与其他内容(如您的情况中的“2”)一样。结果“2”总是大于“12”。它甚至会大于“12929292928382839289382839”

© www.soinside.com 2019 - 2024. All rights reserved.