Why the function called by setTimeout has no callstack limit?
browser, javascript, settimeout
Solution
`setTimeout` is asynchronous (it returns before executing the callback), and the callback will be executed on a new, empty stack frame. That's the whole purpose. It will never overflow the stack.
It is not a recursive call, for which scope (in case of a non-tail-call-optimized function) would need to be retained. But that would also mean that the function became blocking, which is not what you want.
Problem
``` timer = window.setTimeout(function () { //do something window.setTimeout(arguments.callee, 1000); }, 1000); ``` the result is that these codes work well. but why doesn't it cause the error below? Maximum Call Stack Size Exceeded when debugging it, find the variable scope don't include the scope of previous executed "setTimeout function" Who can explain this? with documentation preferably.