2019-08-15

作用域链

谈及作用域链,不得不先了解下,什么是作用域。

作用域

作用域的定义:
在 JavaScript 中有两种作用域

  • 全局作用域
  • 局部作用域

如果一个变量在函数外面或者大括号{}外声明,那么就定义了一个全局作用域,在ES6之前局部作用域只包含了函数作用域,ES6为我们提供的块级作用域,也属于局部作用域。

作用域链

1.作用域链的定义
JavaScript中,JavaScript里一切都是对象,包括函数。函数对象和其它对象一样,拥有可以通过代码访问的属性和一系列仅供JavaScript引擎访问的内部属性。其中一个内部属性是作用域,包含了函数被创建的作用域中对象的集合,称为函数的作用域链。
2.作用域链的运行原理
JavaScript上每一个函数执行时,会先在自己创建的活动对象上找对应属性值。若找不到则往父函数的活动对象上找,再找不到则再上一层的活动对象,直到找到全局作用域。 而这一条形成的“AO(Active Object 活动对象)链” 就是JavaScript中的作用域链。

你可能感兴趣的:(2019-08-15)