js_执行环境及作用域

执行环境

执行环境的定义

  • 执行环境(execution context)的作用是定义了变量或函数的访问数据的范围.每个执行环境都有一个变量对象(variable object),环境中定义的所有变量和函数都保存在这个对象中.
    (相当于宇宙-银河系-太阳系-九大行星的关系,层层包裹)

全局执行环境

  • 全局执行环境是最外层的一个执行环境.在web浏览器中,全局执行环境被认为是window对象.因此所有的全局变量和函数都保存在全局执行环境的变量对象中.
    (全局执行环境就相当于宇宙)

函数的执行环境

  • 每个函数都有属于自己的执行环境.执行流进入一个函数时,函数的环境被推入一个环境栈里,当函数执行完毕时,函数的执行环境被从环境栈中推出,控制权回到函数执行环境被推入栈之前的执行环境手中.

代码在环境中执行的过程

  • 1.执行流进入一个环境变量中时,首先会针对当前执行环境创建一个作用域链(scope chain,用途是对处于该执行环境中所能访问到的变量和函数排序,以便于有序访问 ),用以保存变量对象.
  • 2.在作用链的前端写入当前执行环境的下的变量对象.(如果是函数,则将其活动对象(activation object)作为变量对象,且活动对象在最开始时只包含一个变量,即arguments对象).
  • 3.在作用域链中写入父执行环境的变量对象,一直延伸到全局执行环境.作用域链的最后一个变量对象即全局作用域变量对象.
  • 4.标识符解析:从作用域链的前端开始(即当前执行环境的变量对象)查找,一直查找到最后的变量对象.

一篇关于js执行环境的好文

posted @ 2020-07-02 22:22  Syinho  阅读(159)  评论(0编辑  收藏  举报