performance.now()方法返回一个精确到毫秒的  DOMHighResTimeStamp

这个时间戳实际上并不是高精度的。为了降低像Spectre这样的安全威胁,各类浏览器对该类型的值做了不同程度上的四舍五入处理。(Firefox从Firefox 59开始四舍五入到2毫秒精度)一些浏览器还可能对这个值作稍微的随机化处理。这个值的精度在未来的版本中可能会再次改善;浏览器开发者还在调查这些时间测定攻击和如何更好的缓解这些攻击。

Note: 此特性在 Web Worker 中可用。

返回值表示为从time origin之后到当前调用时经过的时间

牢记如下几点:

  • 在以Window上下文创建各个worker中,performance.now()的值要比在创建这些worker的window中的小。它原来等于main上下文的t0,但是现在不是了。
  • 在共享worker或服务worker中,在worker中的值可能要比main上下文中高,因为window对象可能在这些worker之后创建。

语法

const t = window.performance.now();

示例

let t0 = window.performance.now();
doSomething();
let t1 = window.performance.now();
console.log("doSomething函数执行了" + (t1 - t0) + "毫秒.")

和JavaScript中其他可用的时间类函数(比如Date.now)不同的是,window.performance.now()返回的时间戳没有被限制在一毫秒的精确度内,而它使用了一个浮点数来达到微秒级别的精确度。

另外一个不同点是,window.performance.now()是以一个恒定的速率慢慢增加的,它不会受到系统时间的影响(可能被其他软件调整)。另外,performance.timing.navigationStart + performance.now() 约等于 Date.now()

规范

Specification Status Comment
High Resolution Time Level 2
performance.now()
Candidate Recommendation Stricter definitions of interfaces and types.
High Resolution Time
performance.now()
Recommendation Initial definition

浏览器兼容性

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
nowChrome Full support 24Edge Full support 12Firefox Full support 15
Notes
Full support 15
Notes
Notes In Firefox 57.0.4 the accuracy was reduced to 20 microseconds.
Notes In Firefox 59 the accuracy was reduced to 2 milliseconds.
IE Full support 10Opera Full support 15Safari Full support 8WebView Android Full support YesChrome Android Full support 25Edge Mobile Full support YesFirefox Android Full support 15
Notes
Full support 15
Notes
Notes In Firefox 57.0.4 the accuracy was reduced to 20 microseconds.
Notes In Firefox 59 the accuracy was reduced to 2 milliseconds.
Opera Android No support NoSafari iOS Full support 9Samsung Internet Android ?

Legend

Full support  
Full support
No support  
No support
Compatibility unknown  
Compatibility unknown
See implementation notes.
See implementation notes.

相关链接

文档标签和贡献者

最后编辑者: mdnwebdocs-bot,