我今天一直在处理日期对象,并注意到我无法解释的异常行为。
想象一下这段代码:
var Today = new Date();
var FutureDate = Today.addDays(60);
console.log("Today: " + Today);
console.log("Future: " + FutureDate);
console.log(Today);
console.log(FutureDate);
if(Today == null || Today === null)
{
console.log("Null!");
}
else if(Today === undefined || Today == undefined)
{
console.log("Undefined!");
}
else
{
console.log("Assigned and defined!");
}
使用补充方法:
Date.prototype.addDays = function(days) {
var date = new Date(this.valueOf());
date.setDate(date.getDate() + days);
return date;
}
这将导致以下输出:
Today: Fri May 24 2019...
Future: Tue Jul 23 2019...
//blank
//blank
Assigned and defined!
为什么在控制台中附加日期后才打印日期?我可以看到它不是null,也没有定义。但是我只是对Date.ToString
在某些情况下似乎决定不起作用的事情感到困惑。
编辑。
通过将toString()添加到第二个控制台调用中,我设法使它们得以打印。我只能推断在串联字符串"Today: " + Today
时调用toString()方法,而在作为日期对象调用时则不能。
为什么会这样?我给人的印象是,任何作为参数传递给console.log方法的对象本质上都是“字符串化”的。