首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么(new () == new ())为false,但(Date() == Date())为真?

为什么(new () == new ())为false,但(Date() == Date())为真?
EN

Stack Overflow用户
提问于 2017-02-01 12:44:12
回答 2查看 2.1K关注 0票数 5

我一直在利用JSFiddle来解决FreeCodeCamp中的问题。当我将日期用作字符串时(即不使用"new"):

案例1:

代码语言:javascript
代码运行次数:0
运行
复制
function isSameDay (dtFrom, dtTo) {
    return dtFrom == dtTo
  }

  let today = Date()
  let tomorrow = Date()

  console.log(today)
  console.log(tomorrow)
  console.log(isSameDay(today, tomorrow))

isSameDay返回。但是,当我使用Date作为构造函数(带有“new”)时:

案例2:

代码语言:javascript
代码运行次数:0
运行
复制
function isSameDay (dtFrom, dtTo) {
    return dtFrom == dtTo
  }

  let today = new Date()
  let tomorrow = new Date()

  console.log(today)
  console.log(tomorrow)

  console.log(isSameDay(today, tomorrow))

isSameDay返回false。但是(!),当我添加一元运算符“+”时:

案例3:

代码语言:javascript
代码运行次数:0
运行
复制
function isSameDay (dtFrom, dtTo) {
    return dtFrom == dtTo
  }

  let today = + new Date()
  let tomorrow = + new Date()

  console.log(today)
  console.log(tomorrow)

  console.log(isSameDay(today, tomorrow))

isSameDay返回。我理解案例1和案例3返回true,因为它们只是相同的字符串和相同的毫秒值。

为什么案例2返回false

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-01 12:50:26

使用Date(),只能通过调用JavaScript Date作为构造函数来实例化JavaScript日期对象:将其作为常规函数调用(即不使用新操作符)将返回字符串而不是日期对象。MDN参考

代码语言:javascript
代码运行次数:0
运行
复制
typeof Date()    //"string"
Date() == Date() //true

使用构造函数作为new Date(),每个实例是唯一的(同一个构造函数的两个实例仍然彼此不同),这就是为什么它们在比较时不相等的原因。

代码语言:javascript
代码运行次数:0
运行
复制
typeof new Date();        //"object"
new Date() === new Date() //false
票数 8
EN

Stack Overflow用户

发布于 2017-02-01 12:59:13

简单地说,案例2返回false,因为是比较两个不同的对象引用(即使两个对象都包含完全相同的属性)。

而在其他情况下,您正在比较日期的toString()值。

请参阅== 抽象平等算法的正式文档中的注3

附注3 相等运算符并不总是传递的。例如,可能有两个不同的字符串对象,每个表示相同的字符串值。 每个String对象将被==操作符视为等于String值,但两个String对象并不相等。例如: 新字符串( "a“) == "a”//true“a”==新字符串(“a”) //true 但 新字符串(“a”) ==新字符串(“a”) //false。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41980177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档