《JS中的执行上下文(Execution Context)和栈(stack)》:https://www.jianshu.com/p/e4051933e88e

    这篇翻译的文章说的挺好。

    • 介绍了执行上下文的概念
    • 相关的执行栈
    • 执行上下文的拆解
    • 执行上下文与js解析器
    • 为什么会有hoisting提升?以及,hoisting跟执行上下文之间的联系。

    一个执行上下文从概念上可以视为一个包含三个property的Object:

    1. executionContextObj = {
    2. 'scopeChain': { /* variableObject + all parent execution context's variableObject */ },
    3. 'variableObject': { /* function arguments / parameters, inner variable and function declarations */ },
    4. 'this': {}
    5. }