我要开始学习JavaScript了。我就如何获得当前时间咨询了我的同事。
他用这个密码告诉我:
> date = new Date()
> date.valueOf()但大多数人是这样做的:
> Date.now()第二种方法更简单、更易读。
如果我想说服我的同事使用第二种方法,我应该如何向他解释这种区别?
发布于 2015-10-17 07:43:01
在JavaScript中有几种获取当前时间的方法:
new Date()创建一个表示当前日期/时间的Date对象。new Date().valueOf()返回自1970年1月1日午夜开始的毫秒数new Date().getTime()功能等价于new Date().valueOf()Date.now()功能等价于上面的两个方法正如注释和MDN链接中提到的那样,Internet 8不支持Date.now()。因此,如果要考虑IE8的兼容性问题,您应该以代码可读性略有下降为代价使用new Date().valueOf()。
或者,如果您想使用Date.now(),但必须与不支持它的浏览器兼容,您可以在您的JavaScript文件中放置以下代码,这将增加对它的支持。
if (!Date.now) {
Date.now = function() {
return new Date().getTime();
}
}发布于 2015-10-17 07:44:50
在阅读MDN之后,似乎new Date().getTime()、new Date().valueof()和Date.now()在功能上都是等价的。但是,只有来自不同版本的浏览器才支持Date.now(),最重要的是IE9。因此,如果预IE9支持是重要的,您可能需要多填充。
编辑:真的,唯一关心的是IE。不是总是这样吗?)
发布于 2019-12-22 21:32:59
当我需要时间戳时,我通常使用+new Date()或+new Date().toString(36)。
最近,我改用了Date.now(),因为它更有效率,或者有一天会变得更高效。
从技术上讲,os将日期时间报告为原语,通过调用new (),javascript引擎必须创建一个带有原型的对象(通过引用传递,以后必须被垃圾收集),然后执行valueOf的另一个函数调用。
Date.now可以是全局日期对象的静态函数,它可以对从操作系统报告的值进行简单的计算。
我没有检查所有javascript引擎的源代码,以确保Date.now没有创建日期实例,但是它更高效,或者有一天会变得更高效。
https://stackoverflow.com/questions/33184096
复制相似问题