When one function calls another, JavaScript must keep track of the active work and where to resume. A function execution context is an internal runtime context created for each function invocation; it is not the function context accessed through `this`. section 5.3
During a function call:
- The current context pauses as JavaScript creates a new function execution context to evaluate the called function. section 5.3
- After the function finishes, its context is usually discarded and the caller’s context is restored. The execution context stack tracks active and waiting contexts. section 5.3
Listing 5.5. The creation of execution contexts
function skulk(ninja) { #A
report(ninja + " skulking"); #A
} #A
function report(message) { #B
console.log(message); #B
} #B
skulk("Kuma"); #C
skulk("Yoshi"); #C
Trace `skulk` calling `report`, then compare repeated calls to see where execution must resume. section 5.3
