JavaScript creates one global execution context when a program starts. It differs from a function execution context, which is created each time a function is invoked. The engine uses execution contexts to track code execution; a call stack keeps track of the active context and those waiting to resume. section 5.3
See how the execution context stack tracks function calls and returns. section 5.3
