12

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?

5
  • 2
    Here is the MDN page. Commented Jan 13, 2012 at 14:43
  • 1
    In the HTML5 draft: dev.w3.org/html5/spec/Overview.html#timers Commented Jan 13, 2012 at 14:45
  • the MDN does have some useful info about it: "Code executed by setTimeout() is run in a separate execution context to the function from which it was called." Commented Jan 13, 2012 at 14:50
  • 1
    @MattK: Yes, but the rest of that paragraph talks about this, which is different from scope. Commented Jan 13, 2012 at 14:55
  • So if setTimeout and other similar API is not defined in ECMAscript, javascript itself should be synchronous language, right? can we say that? Commented Mar 21, 2020 at 1:58

2 Answers 2

16

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).

Sign up to request clarification or add additional context in comments.

2 Comments

Wow those HTML5 specs always make me seasick. But I hadn't thought about the situation with respect to web workers.
I think that W3C Window Object spec is abandoned. HTML5 completely specifies the window object, or at least attempts to.
5

The setTimeout() method is a method on the window object. You can find the link to the MDN documentation below:

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

1 Comment

I just updated that with a mention of the scope used to evaluate string parameters.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.