var timeInMs = Date.now();
每MDN
VS
var timeInMs = new Date(optional).getTime();
per MDN。
除了语法和在第二个版本中通过可选项设置日期(不是当前)的能力之外,两者之间是否有任何区别?
Date.now()更快 - 请查看jsperf
答案 0 :(得分:82)
这些是相同的(编辑语义;使用.now()
表现更好一点):
var t1 = Date.now();
var t2 = new Date().getTime();
但是,任何已创建的Date
实例的时间值在构造时(或在其设置的任何时间/日期)被冻结。也就是说,如果你这样做:
var now = new Date();
然后等一会儿,随后对now.getTime()
的调用将告知变量设置点的时间。
答案 1 :(得分:43)
它们实际上是等效的,但您应该使用Date.now()
。它更清晰,速度提高了一倍。
答案 2 :(得分:4)
执行(new Date()).getTime()
时,您正在创建一个新的Date对象。如果重复这样做,它将比Date.now()
同样的原则应适用于Array.prototype.slice.call(arguments, 0)
vs [].slice.call(arguments, 0)
答案 3 :(得分:2)
是的,这是正确的;当使用当前时间时,它们实际上是等效的。
答案 4 :(得分:2)
有时候最好将一些时间跟踪变量保存为Date对象格式而不是几毫秒,以便在不重新实例化的情况下访问Date的方法。在这种情况下,Date.now()仍然会赢得新的Date()等,但在我的Chrome上只有大约20%,在IE上只有一小部分。
请参阅我的JSPERF
timeStamp2.setTime(Date.now()); // set to current;
VS
timeStamp1 = new Date(); // set to current;
答案 5 :(得分:-2)
一个有趣的发现(Chrome / Firefox)。
Date.now() === new Date().getTime(); // true (usually)
Date.now() === new Date().getTime(); // false (sometimes!)