为什么我不能将在日期对象上调用方法的结果存储在变量中

Why can't I store the result of calling a method on a date object in a variable

这是我在开始 Javascript 中解决问题的时候。任务是显示 12 个月后的日期。

这似乎有效:

var dateNow = new Date ();
var currentMonth = dateNow.getMonth();
dateNow.setMonth(currentMonth + 12);
var dateNext = dateNow;
document.write(dateNext.toDateString())

虽然这不是:

var dateNow = new Date ();
var currentMonth = dateNow.getMonth();
var dateNext = dateNow.setMonth(currentMonth + 12);
document.write(dateNext.toDateString())

为什么我不能初始化dateNext的变量?

抱歉,如果这看起来像是一个初级问题,我已经一周了。

这就是 setMonth 的工作原理。它不是 return 日期而是时间戳 - 纪元 - 自 1970 年 1 月 1 日以来经过的毫秒整数 00:00:00 UTC。

您可以改为执行此操作,但它会更改 dateNow

var dateNow = new Date ();
var currentMonth = dateNow.getMonth();
var dateNext = new Date(dateNow.setMonth(currentMonth + 12));
document.write(dateNext.toDateString());

这可能是您想要的

var dateNow = new Date (); // optional
var dateNext = new Date();
dateNext.setMonth(dateNext.getMonth() + 12);
document.write(dateNext.toDateString());

setMonth()方法的return值是日期对象和1970年1月1日午夜之间的毫秒数。toDateString()是Date的方法,所以如果你用一个数字调用它,这是您的第二个代码段将 dateNext 设置为的内容。