gpt4 book ai didi

javascript - 通过数字和字符串设置 new Date() 会给出不同的结果

转载 作者:行者123 更新时间:2023-11-28 19:29:58 28 4
gpt4 key购买 nike

我正在学习 JavaScript,我发现了 JavaScript 的奇怪(?)行为。

我创建日期对象

var stack = new Date(1404187200000) // 07-01-2014
var overflow = new Date('07-01-2014')

当我比较这两个日期对象时

stack == overflow // returns false
stack.getTime() == overflow.getTime() // returns true

我相信这是因为它们不是同一个对象。但我知道“==”是平等的比较,“===”是身份的比较 - 就像这个例子:

var stack = 1;
var overflow = '1';
stack == overflow // returns true
stack === overflow // returns false

那么,为什么即使日期相同,但比较 new Date([NUMBER])new Date([STRING]) 却会得到不同的结果?

请赐教!

最佳答案

您误解了 ===== 之间的区别。并不是说一个人进行相等性检查,一个人进行引用检查。

对于===,两个操作数必须具有相同的类型。但对于==,在检查相等性之前允许类型强制。

在您的情况下,两个对象属于同一类型,因此 ===== 之间没有区别;但他们正在检查引用相等性,而不是值。检查值与日期是否相等的正确方法就像您正在做的那样:检查是否 stack.getTime() == Overflow.getTime()

您还可以执行+stack == +overflow,这将首先对它们进行强制转换,然后您将获得值相等测试。

关于javascript - 通过数字和字符串设置 new Date() 会给出不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27028842/

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