我一直在使用JSFiddle解决FreeCodeCamp的“友好日期范围”问题。当我把Date作为字符串使用时(即不使用“new”):
案例1:
isSameDay 返回 false。但是(!),当我添加一元运算符"+"时:
第三种情况:
isSameDay返回true。我理解情况1和情况3返回true,因为它们只是相同的字符串和相同的毫秒值。
为什么情况2返回false?
案例1:
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返回true。然而,当我使用Date作为构造函数(带有“new”)时:
情况2:
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。但是(!),当我添加一元运算符"+"时:
第三种情况:
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返回true。我理解情况1和情况3返回true,因为它们只是相同的字符串和相同的毫秒值。
为什么情况2返回false?
({}) == ({})
,但是Date()
返回一个字符串,所以大部分时间它们将会相等...除非秒数发生了变化。 - Jaromanda Xnew Date().getTime() == new Date().getTime()
是错误的情况...因为在两次调用new Date()之间可能会有一毫秒的时间差...使用Date() == Date()
的可能性较小,因为它是一个具有1秒分辨率的字符串...但仍然可能偶尔出现错误。 - Jaromanda X