美文网首页
javascript 执行环境,变量对象,作用域链

javascript 执行环境,变量对象,作用域链

作者: LYF闲闲闲闲 | 来源:发表于2017-08-16 16:21 被阅读29次

    执行环境

    函数都会创建的执行环境,包括 变量对象,作用域链,上下文(this)。执行环境定义了变量或函数有权访问的其他数据。

    变量对象(VO)

    存储被定义在执行环境中的变量

    变量对象内容包括:

    1. 函数的形参
    2. var声明的变量
    3. 函数声明(不包括函数表达式)

    全局环境中的变量对象

    是全局对象自己
    全局对象在进入任何执行环境之前就已经创建了的对象

    函数环境的变量对象

    是活动对象(AO),在进入函数执行环境中被创建,它通过函数的arguments属性初始化

    作用域链

    1. 一个执行环境的数据(变量、函数声明和函数形参)作为属性存储在变量对象中。
    2. 同时也知道,变量对象在每次进入环境时创建,并填入初始值,值的更新出现在代码执行阶段。

    代码在一个环境中执行的时候,会创建变量对象的一个作用域链,作用域链的用途是保证对变量和函数的有序访问。

    本质:是一个指向变量对象的指针列表,它只引用但不实际包含变量对象。

    一个作用域链包括父级变量对象(作用域链的顶部)、函数自身变量和活动对象
    当查找标识符的时候,会从作用域链的活动对象部分开始查找,然后(如果标识符没有在活动对象中找到)查找作用域链的顶部,循环往复,就像作用域链那样。

    参考
    http://www.cnblogs.com/TomXu/archive/2012/01/16/2309728.html

    相关文章

      网友评论

          本文标题:javascript 执行环境,变量对象,作用域链

          本文链接:https://www.haomeiwen.com/subject/maxzkxtx.html