Javascript 找出Date.parse()不等于比较日期的原因
当我将arriveDate1和holiday进行比较时,它们并不相等,我也不知道为什么。在控制台中,两个日期显示相同。你知道为什么会这样吗?(使用Date.js)Javascript 找出Date.parse()不等于比较日期的原因,javascript,date,Javascript,Date,当我将arriveDate1和holiday进行比较时,它们并不相等,我也不知道为什么。在控制台中,两个日期显示相同。你知道为什么会这样吗?(使用Date.js) 三等号测试对象是否相同,也就是说,它们是相同的对象。试试双重相等 之所以会发生这种情况,是因为当您使用=和==操作符进行检查时,Javascript会通过引用执行检查。这两个对象,除非它们像holiday=arriveDate1那样声明,否则永远不会相等,因为它们不共享相同的内存引用 例如: a = {foo: 'hello'}; b
三等号测试对象是否相同,也就是说,它们是相同的对象。试试双重相等 之所以会发生这种情况,是因为当您使用
=
和==
操作符进行检查时,Javascript会通过引用执行检查。这两个对象,除非它们像holiday=arriveDate1
那样声明,否则永远不会相等,因为它们不共享相同的内存引用
例如:
a = {foo: 'hello'};
b = {foo: 'hello'};
a == b;
> false
您应该使用.toISOString
或一元运算符+
执行检查,以毫秒为单位转换数据对象,如下所示:
// this
if (arriveDate1.toISOString() == holiday.toISOString()) ...
// or this
if (+arriveDate1 == +holiday) ...
您将对象与
==
进行比较,因此除非您将对象与自身进行比较,否则它们永远不会相同。改为使用=
,或转换为原语,例如+arriveDate1===+holiday
。你在用什么图书馆?addDays不是ECMAScript的一部分。Triple和double equals通过引用进行检查,因此比较两个对象将始终产生false,除非您声明其中一个对象将另一个对象分配给它,如obj1=obj2
。
// this
if (arriveDate1.toISOString() == holiday.toISOString()) ...
// or this
if (+arriveDate1 == +holiday) ...