6.JavaScript 作用域
作用域
-
概念
简单地说,作用域就是在上下文中,变量与函数的可访问范围。它可以分为 块级作用域 和函数作用域。 -
作用
作用域控制着变量与函数的可见性和生命周期。
作用域链
-
概念
作用域链可以理解为一组对象列表,包含父级和自身的变量对象,因此我们便能通过作用域链访问到父级里声明的变量或者函数。 -
作用
作用域链的作用是保证执行环境里有权访问的变量和函数是有序的,作用域链的变量只能向上访问,变量访问到window
对象即被终止,作用域链向下访问变量是不被允许的 -
组成
由两部分组成-
[[scope]]
属性: 指向父级变量对象和作用域链,也就是包含了父级的[[scope]]
和AO
-
AO
: 自身活动对象
-
> 如此 `[[scopr]]` 包含 `[[scope]]`,便自上而下形成一条 链式作用域。
参考链接:
http://blog.poetries.top/FE-Interview-Questions/base/#_2-%E8%AF%B4%E8%AF%B4%E4%BD%A0%E5%AF%B9%E4%BD%9C%E7%94%A8%E5%9F%9F%E9%93%BE%E7%9A%84%E7%90%86%E8%A7%A3