为什么将setFullYear方法连接到新的Date()返回毫秒?

时间:2016-06-30 17:35:17

标签: javascript date

我正在玩一些代码并缩短我的代码我想做这样的事情:

//This sets the date to milliseconds
document.getElementById('date').innerHTML= new Date().setFullYear(2020);

//This sets the date to GMT date notation
var d = new Date();
d.setFullYear(2020);

document.getElementById('date').innerHTML= d;

这里发生了什么?为什么我不能在新的Date方法上进行concatonate并直接调用该方法。奇怪的是,它试图做某事但却以某种方式失败并且回落到毫秒。有人可以对此有所了解吗?

请参阅小提琴:https://jsfiddle.net/5atb3qtv/

1 个答案:

答案 0 :(得分:2)

这是因为在第一种情况下,您会提醒调用.setFullYear方法的返回值,该方法返回一个以毫秒为单位的值。在第二个示例中,您将警告将调用.toString方法的Date对象,从而生成您看到的日期格式。

编辑:

如果你仍然对为什么给出方法的返回值而不是第一种情况的日期感到困惑,那就这样想:如果你调用像document.getElementById之类的对象的方法,你期望得到调用该方法的结果是返回值,在这种情况下是Element。你不会期望得到document。在你的情况下它是一样的。您正在调用(new Date()).setFullYear(),它会返回一个数字,并期望它返回它所属的日期对象,这是不合理的。