Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 找出Date.parse()不等于比较日期的原因_Javascript_Date - Fatal编程技术网

Javascript 找出Date.parse()不等于比较日期的原因

Javascript 找出Date.parse()不等于比较日期的原因,javascript,date,Javascript,Date,当我将arriveDate1和holiday进行比较时,它们并不相等,我也不知道为什么。在控制台中,两个日期显示相同。你知道为什么会这样吗?(使用Date.js) 三等号测试对象是否相同,也就是说,它们是相同的对象。试试双重相等 之所以会发生这种情况,是因为当您使用=和==操作符进行检查时,Javascript会通过引用执行检查。这两个对象,除非它们像holiday=arriveDate1那样声明,否则永远不会相等,因为它们不共享相同的内存引用 例如: a = {foo: 'hello'}; b

当我将arriveDate1和holiday进行比较时,它们并不相等,我也不知道为什么。在控制台中,两个日期显示相同。你知道为什么会这样吗?(使用Date.js)


三等号测试对象是否相同,也就是说,它们是相同的对象。试试双重相等

之所以会发生这种情况,是因为当您使用
=
==
操作符进行检查时,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) ...