我一直遇到这个问题.而现在它与Date对象有关
var now = new Date();
var later = new Date();
later.setHours( later.getHours() + 8 );
<Wait for somthing>
now = later;
later.setHours( later.getHours() + 8 );
alert(now == later); //returns True
Run Code Online (Sandbox Code Playgroud)
我认为这可以使用回调来解决:
var adjustTime = function(callback){
now = later;
callback();
}
adjustTime(function(){
later.setHours( later.getHours() + 8 );
});
alert(now == later); //returns True
Run Code Online (Sandbox Code Playgroud)
我不明白什么?如何正确更新这些变量?
编辑: 好的,我应该更好地解释自己.我想要做的是将now变量更新为稍后的值.之后我想稍后再增加8小时.
Date实例之间的等式比较仅测试对象引用相等性.无论如何,一旦你完成了这个:
now = later;
Run Code Online (Sandbox Code Playgroud)
然后变量"now"和"later"引用相同的对象.因此,"以后"的更新是"现在"的更新.
Date原型上的"setter"方法都直接修改对象.也就是说,Date实例不是不可变的.
编辑 - 我猜你真正想要的是保持"现在"和"稍后"分开.在这种情况下,这样的事情可能是你想要的:
now = later;
later = new Date(later.getTime());
later.setHours(later.getHours() + 8);
Run Code Online (Sandbox Code Playgroud)
之后,"now"和"later"将不相等,因为您已将其设置为新 Date实例.
| 归档时间: |
|
| 查看次数: |
85 次 |
| 最近记录: |