3. 变量对象

2017-03-24  本文已影响0人  Stago

执行上下文的生命周期:

  1. 创建阶段。(创建变量对象,建立作用域链,确定this的指向)
  2. 代码执行阶段。(变量赋值,函数引用,执行其他代码)

变量对象的创建经历的几个过程:

  1. 建立参数对象, 检查当前上下文中的参数,建立该对象下的属性与属性值。
  1. 检查当前上下文的函数声明, 在变量对象中以函数名建立一个属性,属性值指向该函数所在内存地址的引用。如果函数名的属性已经存在,那么该属性将会被新的引用所覆盖。

3.检查当前上下文中的变量声明,为每个找到的变量声明在变量对象中以变量名建立一个属性值为undefined的属性。如果该变量名的属性已经存在,为了防止同名的函数被修改为undefined,则会直接跳过,原属性值不会被修改。

变量对象和活动对象都是同一个对象,只是处于执行上下文的不同生命周期。
未进入执行阶段之前,变量对象中的属性都不能访问,
但是进入执行阶段之后,变量对象转变为了活动对象,里面的属性都能被访问了,然后开始进行执行阶段的操作。

全局上下文的一个特殊的地方是其变量对象就是window对象。
全局上下文的生命周期与程序的生命周期一致,只要程序运行不结束,全局上下文就会一直存在。
其他所有的上下文环境,都能直接访问全局上下文的属性。

原文戳这里

上一篇 下一篇

猜你喜欢

热点阅读