setTimeout(): If not defined in EcmaScript spec, where can I learn how it works?

javascript, settimeout

Solution

`setTimeout` and such aren't in the ECMAScript specification because they're not JavaScript features. They're features of the browser environment's `window` object. Other environments (Windows Scripting Host, NodeJS, etc.) won't necessarily have those features.

The W3C has been trying to standardize the `window` object and its various features (including `setTimeout`), the latest is in the timers section of the HTML5 spec. A lot of it is codifying what browsers already do, although some of it (like saying that the minimum interval value must be `4` [milliseconds]) seems (to me) to be out-of-place for an API specification and implementations seem to make up their own minds (in tests, you can see current browsers happily doing a shorter interval, with the apparent exception of Opera which appears to do what the spec says).

Problem

I had another question in SO about setTimeout(), where a user mentioned that if the function argument is a string it gets evaluated in global scope, other wise it's not. This was an eye-opener, so I tried to find more info about how setTimeout actually works, but it's not part of the EcmaScript spec and not even MDN had that specific of of information I found in SO. Is there some good reference about how `setTimeout()` works?

Original source

Related problems