如何解决JavaScript中的关系比较
对于这些比较,我感到困惑,而且我不知道该怎么办。 在底部代码中,当我比较 x 和 y 小于或大于时,它返回false,但是当我将它们与equals比较时,它们返回true! 你知道为什么会这样吗?
var x = { y: 10 };
var y = { y: 11 };
x < y; // false
x == y; // false
x > y; // false
x <= y; // true
x >= y; // true
解决方法
现在,我了解 x 和 y 的结果如何,但是 x
x < y; // false
x > y; // false
当关系运算符的任何操作数是对象时,它将转换为原始值。因此,在这种情况下,x
和y
都首先转换为原始值,然后相互比较。
通过最终在每个对象上调用x
方法,y
和.toString()
都将转换为原始值,这将返回格式为[object Object]
的字符串,并且由于两者对象将以这种字符串形式进行转换,x < y
和x > y
的计算结果均为false,因为两个字符串(即[object Object]
)相等。
x == y; // false
此评估为false,因为当==
运算符的两个操作数的类型相同时,javascript将执行严格的相等比较===
,并且由于这两个对象是内存中的两个独立对象,因此它们不相等。
x <= y; // true
x >= y; // true
由于下面的比较,这两个表达式的计算结果均为真
"[object Object]" == "[object Object]"
评估为真。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。