【问题标题】:why javascript date1 == date2 not working? [duplicate]为什么 javascript date1 == date2 不起作用? [复制]
【发布时间】:2014-03-20 19:14:32
【问题描述】:

我有两个 javascript 日期,dt 和 Frefdate。在萤火虫中,两个值都是 Date {Fri Apr 08 2005 00:00:00 GMT+1000 (AUS Eastern Summer Time)}。

但是 dt == Frefdate 是假的。 我必须使用 dt.valueOf() == Frefdate.valueOf() 来比较这两个日期。为什么?

在 w3schools 网站中,日期比较可以是 date1 > date2。(见http://www.w3schools.com/js/js_obj_date.asp)。

谢谢。

【问题讨论】:

  • 两个日期是两个不同的对象。
  • 它是false,原因相同{} == {}false:它们是不同的对象。 .valueOf 返回一个数字,如果两个数字具有相同的值,则它们相等。

标签: javascript


【解决方案1】:

这两个日期是两个不同的对象,因此它们不是“对象相等”。 JavaScript 允许您使用 == 比较字符串和数字,但所有其他类型都作为对象进行比较。

【讨论】:

    【解决方案2】:

    当您比较两个不同的日期对象时,您不是在比较它们的值,而是在比较它们实际上是同一个对象。

    即使两个日期对象设置为相同的日期和时间,它们也是两个独立的实例。可以把它想象成比较对内存中结构的引用。每个的内存位置都会不同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多