Js函数执行过程

142 阅读1分钟
  1. 全局执行环境:指运行再最外层的执行环境,在web中全局执行环境被认为是window对象,所有在全局环境中的变量和函数都是对象的属性和方法
  2. 执行环境:在作用域下创建属性方法的环境,在执行完所有代码后,该环境就回被销毁,被回收掉,每个函数都有自己的执行环境,
  3. 执行环境栈:依次放置执行环境的栈(Call stack),执行环境下函数执行完成就移除执行栈,并被js gc回收,并把执行权限交给下一个执行环境函数的环境就会被推入“环境栈”中。函数执行完后,栈将其弹出并销毁变量对象,然后把控制权返回在给之前的执行环境。如果内执行环境的变量对象,被外部执行环境引用,那么内部环境变量对象就无法被销毁(如:闭包)。
  4. 变量对象:每个执行环境中定义的变量和函数都赋值给变量对象,
  5. 活动对象:指当前正在执行执行环境的变量对象
  6. 作用域链:是一个链表,存储着与执行环境相关的变量对象和arguments,可以通过scope属性查看变量对象列表
  7. 作用域链的访问顺序: 如果函数b存在prototype原型对象,则在查找完自身的活动对象后先查找自身的原型对象,再继续查找。这就是Javascript中的变量查找机制。如果整个作用域链上都无法找到,则返回undefined。