gpt4 book ai didi

javascript - 为什么 Javascript 比较运算符在数学上不一致?

转载 作者:搜寻专家 更新时间:2023-11-01 04:17:05 25 4
gpt4 key购买 nike

很久以前在数学课上我被教导

a == b if and only if a <= b and 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 具有相等的值。

最佳答案

首先让我们从您要比较的内容开始:

typeof new Date(400)
"object"

Javascript 对象使用方法 .valueOf()比较前两种情况下的值。默认情况下,一般对象不知道如何将一个对象与另一个对象进行比较,而是使用字符串 "[object Object]"。另一方面,日期知道如何。

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

关于javascript - 为什么 Javascript 比较运算符在数学上不一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23402301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com