javascript - 为什么与 new Date() 连接的 setFullYear 方法返回毫秒?

标签 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 方法上的方法。奇怪的是,它尝试做某事但不知何故失败并回落到毫秒。有人可以解释一下吗?

参见 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/

相关文章:

javascript - 如何让vue每天只显示一次弹出窗口

javascript - `throw ' foo '`, ` throw Error ('foo' )`, ` throw new Error ('foo' )` 有什么区别?

mysql - TIMESTAMP 和 DATE 之间的行为差​​异

javascript - 使用 moment.js 验证日期

javascript - 如何单独使用 sizzle.js

javascript - 使用 ajax 请求测试响应单击按钮

javascript - 执行函数作为异步 Node.js 脚本的最后一件事

php - 解决 PHP 中的日期时间差异

MySQL DATE 返回一些空白值但不是全部

algorithm - 以 DD/MM HH :MM:SS 格式仅使用一次数字 0-9 查找最早日期