Skip to content
大纲

作用域

控制变量和函数的可见范围和生命周期称为作用域。js内的作用域是静态作用域,并不会因为在其他作用域运行,就调用其他作用域内的变量,而是调用定义其作用域的变量

js
let a = 9
  function b () {
    console.log(a)
  }

  function c () {
    let a = 88
    b() // 打印 9
  } 
  c()

作用域链

多个作用域的对象列表,用来执行上下文的检索标识符(变量名,参数,函数名)

作用域的形成

  1. 在执行上下文阶段,遇到函数声明时,在创建阶段,汇报父级的变量对象集合保存到内部属性[[ scope ]]中,这个集合称之为作用域链
  2. 然后在运行激活阶段,会复制[[ scope ]],然后创建自身的变量对象加入到其作用链中

Released under the MIT License.