「面试题」3、说一下对作用域的理解

96 阅读1分钟
  • 作用域: 作用域是定义变量的区域,它有一套访问变量的规则,这套规则来管理浏览器引擎如何在当前作用域以及嵌套的作用域中根据变量(标识符)进行变量查找
  • 作用域链: 作用域链的作用是保证对执行环境有权访问的所有变量和函数的有序访问,通过作用域链,我们可以访问到外层环境的变量和 函数。

作用域链的本质上是一个指向变量对象的指针列表。变量对象是一个包含了执行环境中所有变量和函数的对象。作用域链的第一个对象始终都是当前执行上下文的变量对象。全局执行上下文的变量对象(也就是全局对象)始终是作用域链的最后一个对象。

作用域可以理解为变量的可访问性,总共分为三种类型,分别为:

  • 全局作用域
  • 函数作用域
  • 块级作用域,ES6 中的 letconst 就可以产生该作用域

作用

  • 作用域链的作用的是保证执行环境中的有权访问的变量和方法是有序的,
  • 作用域链的变量只能向上访问,变量访问到window对象就终止,作用域链向下访问变量是不被允许的
  • 作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期