我很难理解这一点 “9”>“099”返回true而“9”>“99”返回false(9只是一个例子,它发生像“x”>“xabc”返回false和“x”>“abc “返回true,其中a小于x但abc大于x,a,b,c,x是数字)。提前谢谢。
答案 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
只有一个字符,而第二个字符串x
有x
作为第二个字符..
xbc
中的
b
与x>abc
进行比较,当第一个字符位置x
大于a
时,它会返回x
a
中的,首先将true
与x>xbc
进行比较,后者返回x
,因为两者都具有相同的ascii值。
,然后将x
与0
进行比较,因为b
只有""
而"x"
有"x"
作为第二个角色。因此存在"xbc"
大于"b"
所以它返回xb