setTimeout():如果没有在EcmaScript规范中定义,我在哪里可以了解它是如何工作的?

use*_*722 8 javascript settimeout

在SO中另一个关于setTimeout()的问题,其中一个用户提到如果函数参数是一个字符串,它将在全局范围内进行评估,否则它不是.这让人大开眼界,所以我试图找到更多关于setTimeout实际工作方式的信息,但它不是EcmaScript规范的一部分,甚至MDN都没有我在SO中找到的那些特定信息.

关于如何setTimeout()运作有一些很好的参考?

T.J*_*der 11

setTimeout这些不在ECMAScript规范中,因为它们不是JavaScript特性.它们是浏览器环境window对象的特征.其他环境(Windows Scripting Host,NodeJS等)不一定具有这些功能.

W3C一直在尝试标准化window对象及其各种功能(包括setTimeout),最新的是在HTML5规范的计时器部分.其中很多都是编码已经做过的浏览器,虽然其中一些(比如说最小间隔值必须是4[毫秒])似乎(对我而言)对于API规范来说是不合适的,并且实现似乎他们自己的想法(在测试中,你可以看到当前的浏览器愉快地做了一个更短的间隔,除了Opera似乎做了规范所说的).


Phi*_*ein 5

setTimeout()方法是window对象的一种方法.您可以在下面找到MDN文档的链接:

https://developer.mozilla.org/en/DOM/window.setTimeout