很久以前,在数学课上我被告知
a == b 当且仅当a
Javascript 似乎不这么认为:
> new Date(400) <= new Date(400)
true
> new Date(400) >= new Date(400)
true
> new Date(400) == new Date(400)
false
有人可以解释导致这个结果的类型强制规则吗?看来模糊等于运算符==
应该相信两人Date
s 具有相等的值。
首先让我们从您要比较的内容开始:
typeof new Date(400)
"object"
Javascript对象使用方法.valueOf() https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/valueOf比较前两种情况的值。一般对象默认不知道如何相互比较并使用字符串“[对象对象]”。另一方面,日期知道如何做。
new Date(400) <= new Date(400)
new Date(400).valueOf() <= new Date(400).valueOf()
400 <= 400
true
然而,最后一个操作对对象的定义不同,它比较两个对象(不是上面的整数)是否具有相同的引用,但它们不会,因为它们都是单独创建的新对象。
new Date(400) == new Date(400)
false
如果您想以与前两个类似的方式比较日期值,则需要专门调用.valueOf()
.
new Date(400).valueOf() == new Date(400).valueOf()
true
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)