我正在玩一些代码,为了缩短我的代码,我想做这样的事情:
//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 方法上的方法。奇怪的是,它尝试做某事但不知何故失败并回落到毫秒。有人可以解释一下吗?
参见 fiddle :https://jsfiddle.net/5atb3qtv/
最佳答案
这是因为在第一种情况下,您会警告调用 .setFullYear
方法的返回值,该方法返回一个以毫秒为单位的值。在第二个示例中,您将警告一个 Date 对象,将调用该对象的 .toString
方法,从而生成您看到的日期格式。
编辑:
如果您仍然对为什么在第一种情况下给出方法的返回值而不是日期感到困惑,请这样想:如果您调用像 document.getElementById 这样的对象的方法
,您期望获得调用该方法的结果是返回值,在本例中是一个 Element
。您不会期望拿回 document
。你的情况也是一样。您正在调用 (new Date()).setFullYear()
,它返回一个数字,并期望它返回它所属的日期对象,这是没有意义的。
关于javascript - 为什么与 new Date() 连接的 setFullYear 方法返回毫秒?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38129857/