当我将到达日期与假期进行比较时,他们并不相同,我不知道为什么。在控制台中,两个日期显示相同。任何想法为什么会这样? (使用Date.js)。
var orderShip1 = Date.today(); //date it ships
var arriveDate1 = orderShip1.addDays(3); //first day it could arrive
var holiday = Date.parse('8/8/2014');
console.log(arriveDate1); // Fri Aug 08 2014 00:00:00 GMT-0400 (EDT)
console.log(holiday); // Fri Aug 08 2014 00:00:00 GMT-0400 (EDT)
if (arriveDate1 === holiday) {
orderShip1.addDays(1);
//arriveDate1 = orderShip1.addDays(1);
}
答案 0 :(得分:1)
这是因为当您使用==
和===
运算符进行检查时,Javascript会通过引用执行检查。除非它们被声明为holiday = arriveDate1
,否则这两个对象将永远不会相等,因为它们不会共享相同的内存引用。
示例:
a = {foo: 'hello'};
b = {foo: 'hello'};
a == b;
> false
您应该使用.toISOString
或一元运算符+
执行检查,以毫秒为单位转换数据对象,如下所示:
// this
if (arriveDate1.toISOString() == holiday.toISOString()) ...
// or this
if (+arriveDate1 == +holiday) ...
答案 1 :(得分:0)
三等号符号测试对象是否相同,即它们是同一个对象。尝试双等于。