• 函数的执行上下文
      • 全局执行上下文
      • 函数级的执行上下文
      • eval执行上下文
    • 函数执行的阶段可以分文两个:函数建立阶段,函数执行阶段
      • 函数建立阶段:当调用函数,还没有执行函数内部的代码
        • let const 会在 script对象中 var在global对象中
        • 会创建执行上下文对象,函数内部需要的数据准备好 ```javascript ExecutionContext = { variableObject:{a,b,sub,s:undefined,arguments} //变量对象,进行变量提升,此时不可使用,函数中的arguments,参数,局部成员 scopeChains://作用域链。当前函数所在的父级作用域中的活动对象 this:{} //当前函数的this指向 } function fn(a,b){ function sun(){ var s = 56 } }
    1. - 函数执行阶段
    2. ```javascript
    3. //变量对象转为活动对象
    4. ExecutionContext = {
    5. activationObject://vo这个对象指向ao,函数中的arcguments,参数,局部变量
    6. scopeChains://当前所在的父级作用域中的活动成员
    7. this:{}
    8. }

    [[Scopes]]作用域链,函数在创建时候会生产该属性,js引擎才可以访问,存储的是所有父级中的变量对象

    • 闭包
      • 外部对一个函数内部有引用 不一定是function 可以是一个对象 如果是值类型,不会形成闭包
      • 在另一个作用域能访问到 所返回对象 的外部作用域中的的局部成员
      • 取消掉 在外部将使用的闭包 赋值为 Null