setTimeout (): если не определено в спецификации EcmaScript, где я могу узнать, как это работает? - PullRequest
8 голосов
/ 13 января 2012

У меня был другой вопрос в SO о setTimeout () , где пользователь упомянул, что , если аргумент функции является строкой, он вычисляется в глобальной области видимости, в противном случае это не . Это открыло глаза, поэтому я попытался найти больше информации о том, как на самом деле работает setTimeout, но это не является частью спецификации EcmaScript, и даже MDN не обладал такой специфической информацией, которую я нашел в SO.

Есть ли хорошие рекомендации о том, как работает setTimeout()?

Ответы [ 2 ]

11 голосов
/ 13 января 2012

setTimeout и тому подобное не входит в спецификацию ECMAScript, поскольку они не являются функциями JavaScript. Это функции объекта window среды браузера. Другие среды (Windows Scripting Host, NodeJS и т. Д.) Не обязательно будут иметь эти функции.

W3C пытается стандартизировать объект window и его различные функции (в том числе setTimeout), последняя версия представлена ​​в разделе таймеров спецификации HTML5 . Во многом это кодифицирует то, что браузеры уже делают, хотя некоторые из них (например, говорят, что минимальное значение интервала должно быть 4 [миллисекунды]) кажутся (для меня) неуместными для спецификации API и реализаций кажется, что они решили ( в тестах , вы можете видеть, что современные браузеры с радостью делают более короткий интервал, за очевидным исключением Opera, которая, кажется, выполняет то, что говорит спецификация).

5 голосов
/ 13 января 2012

Метод setTimeout() - это метод объекта window.Вы можете найти ссылку на документацию MDN ниже:

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

...