执行上下文的生命周期:
- 创建阶段。(创建变量对象,建立作用域链,确定this的指向)
- 代码执行阶段。(变量赋值,函数引用,执行其他代码)
变量对象的创建经历的几个过程:
- 建立参数对象, 检查当前上下文中的参数,建立该对象下的属性与属性值。
- 检查当前上下文的函数声明, 在变量对象中以函数名建立一个属性,属性值指向该函数所在内存地址的引用。如果函数名的属性已经存在,那么该属性将会被新的引用所覆盖。
3.检查当前上下文中的变量声明,为每个找到的变量声明在变量对象中以变量名建立一个属性值为undefined的属性。如果该变量名的属性已经存在,为了防止同名的函数被修改为undefined,则会直接跳过,原属性值不会被修改。
变量对象和活动对象都是同一个对象,只是处于执行上下文的不同生命周期。
未进入执行阶段之前,变量对象中的属性都不能访问,
但是进入执行阶段之后,变量对象转变为了活动对象,里面的属性都能被访问了,然后开始进行执行阶段的操作。
全局上下文的一个特殊的地方是其变量对象就是window对象。
全局上下文的生命周期与程序的生命周期一致,只要程序运行不结束,全局上下文就会一直存在。
其他所有的上下文环境,都能直接访问全局上下文的属性。
网友评论