javascript:使用大于字符串

时间:2013-02-21 12:04:18

标签: javascript

我很难理解这一点 “9”>“099”返回true而“9”>“99”返回false(9只是一个例子,它发生像“x”>“xabc”返回false和“x”>“abc “返回true,其中a小于x但abc大于x,a,b,c,x是数字)。提前谢谢。

2 个答案:

答案 0 :(得分:9)

  

它发生像“x”>“xabc”返回true而“x”>“abc”返回false,其中a小于x但abc大于x和a,b,c,x数)

是(除了"abc" 大于"x",这些是字符,而不是数字。这是文本比较,字符串中的数字在比较之前不会转换为数字。因此,比较逐个字符地工作,在第一次找到差异时停止。在"99" > "099"的情况下,由于左侧字符串中的"9"大于右侧字符串中的"0",因此结果仅由第一个字符决定。 (同样的事情发生在"x" > "abc",因为"x"大于"a"。)

请注意:

之间存在很大差异
console.log("99" > "099"); // "true"

console.log(99 > "099"); // "false"

在后一种情况下,因为其中一个操作数是数字,JavaScript引擎将尝试将其他操作数转换为数字,然后比较数字。在前一种情况下,因为两个操作数都是字符串,所以不会,它会进行文本比较。

旁注:注意以0开头的数字字符串(如“099”)。如果它们最终被隐式转换为数字,则可能被视为八进制(基数为8),具体取决于所使用的JavaScript引擎。

答案 1 :(得分:2)

x>abc返回true,因为x的{​​{1}}值超过ascii

但是a是假的,但x>xbc的{​​{1}}值等于x,但对于字符串中的第二个字符,第一个字符串ascii只有一个字符,而第二个字符串xx作为第二个字符..

xbc

中的

bx>abc进行比较,当第一个字符位置x大于a时,它会返回x

第二个示例a中的

,首先将truex>xbc进行比较,后者返回x,因为两者都具有相同的ascii值。

,然后将x0进行比较,因为b只有"""x""x"作为第二个角色。因此存在"xbc"大于"b"

所以它返回xb