作用域链

作用域链: 作用域(AO(Activation object (执行期上下文)), 全局作用域(GO)

javascript是一种解释性语言,它执行之前会先进行语法分析,然后是预编译,最后解释执行,而AO链是在预编译过程产生。

JS运行三部曲:

  1. 语法解析——检查有无语法错误;
  2. 预编译;
  3. 解释执行——将 js 翻译成计算机识别的语言(0 和 1组成的),翻译一行执行一行,每一次执行完毕后,不被引用的变量就会被销毁.

 

js 预编译过程步骤:
1、先创建 GO 、AO对象(即作用域)。

2、找到变量 、形参都赋值为undefind。

3、实参赋值给形参。

4、在函数体里面找函数声明,值赋予函数体(所以函数会覆盖形参和变量)。

闭包是因为变量没被销毁 ,变量的AO和GO还存在,所以能获取到没被销毁的变量。(js的销毁机制:在函数的功能体中,每一次执行完毕后,不被引用的变量就会被销毁)。

 

posted @ 2022-01-21 17:07  菜鸟乐谷  阅读(30)  评论(0编辑  收藏  举报