134
var timeInMs = Date.now();

每个MDN

对比

var timeInMs = new Date(optional).getTime();

每个MDN

除了语法和通过第二个版本中的可选设置日期(不是当前)的能力之外,两者之间有什么区别吗?

Date.now() 更快 - 查看jsperf

4

5 回答 5

122

这些东西是一样的(在语义上编辑;性能稍微好一点.now()):

var t1 = Date.now();
var t2 = new Date().getTime();

但是,任何已创建Date实例的时间值在其构造时(或在其设置的任何时间/日期)都会被冻结。也就是说,如果你这样做:

var now = new Date();

然后稍等片刻,随后的调用now.getTime()将告诉您设置变量时的时间。

于 2012-09-20T17:04:32.107 回答
64

它们实际上是等效的,但您应该使用Date.now(). 它更清晰,速度大约是原来的两倍。

编辑:来源:http: //jsperf.com/date-now-vs-new-date

于 2012-09-20T17:05:43.200 回答
5

当你这样做时,(new Date()).getTime()你正在创建一个新的 Date 对象。如果您重复执行此操作,它将比 Date.now() 慢约 2 倍

同样的原则也适用于Array.prototype.slice.call(arguments, 0)vs[].slice.call(arguments, 0)

于 2013-09-27T17:46:18.060 回答
3

对,那是正确的; 在使用当前时间时,它们实际上是等效的。

于 2012-09-20T17:03:43.550 回答
2

有时最好在 Date 对象格式中保留一些时间跟踪变量,而不是仅仅几毫秒,以便在不重新实例化的情况下访问 Date 的方法。在这种情况下, Date.now() 仍然胜过 new Date() 之类的东西,尽管在我的 Chrome 上只有大约 20%,在 IE 上只有一点点。

请参阅我的 JSPERF

timeStamp2.setTime(Date.now()); // set to current;

对比

timeStamp1 = new Date(); // set to current;

http://jsperf.com/new-date-vs-settime

于 2013-12-28T22:02:18.647 回答