Skip to content

作用域链的理解

TIP

作用域决定了代码区块中变量和其他资源的可见性

什么是作用域

当前正在执行的代码能够访问到变量的范围。

作用域类型

  • 词法作用域:又叫静态作用域,是定义的时候就决定了作用域的范围,js是采用词法作用域
  • 动态作用域:实在运行的时候确定的,关注代码执行函数调用

作用域分类

  • 全局作用域
  • 函数作用域
  • 块级作用域

什么是作用域链,如何理解?

每个函数执行都需要开辟一个私有的执行上下文,创建执行上下文会初始化作用域链。 作用域链包括当前函数存在的作用域以及所有父级作用域,当函数访问变量的时候,就会顺着这个作用域链去查找变量。

作用域和执行上下文区别

  • 作用域:是静态的,是代码和函数定义的时候就确定了,一旦确定无法改变
  • 执行上下文:是动态的,代码和函数执行的时候创建的,代码执行完就消失
  • 联系:执行上下文环境是在对应的作用域中