Fe-interview: [js] 第142天 请描述下函数的执行过程

Created on 4 Sep 2019  ·  4Comments  ·  Source: haizlin/fe-interview

第142天 请描述下函数的执行过程

js

Most helpful comment

首先会产生一个函数执行环境,然后js引擎会把这个执行环境放到函数调用栈中。
函数开始执行,根据代码顺序执行,遇到变量赋值时, 给对应的变量赋值。
函数执行完毕后,局部活动对象就会被销毁,内存中仅保存全局作用域。

All 4 comments

首先会产生一个函数执行环境,然后js引擎会把这个执行环境放到函数调用栈中。
函数开始执行,根据代码顺序执行,遇到变量赋值时, 给对应的变量赋值。
函数执行完毕后,局部活动对象就会被销毁,内存中仅保存全局作用域。

  1. 声明+定义
    2.初始化当前环境的作用域
    3.代码依次执行

函数创建的时候会保存父级变量对象到自己的scope属性下
函数执行不代表立即执行

函数会创建一个执行上下文
执行上下文的作用是:
1. 确定this指向
2. 创建词法变量
3. 创建变量环境组件 -- 全局变量

大致过程如下:

  1. 函数执行,创建一个执行上下文,将函数压入调用栈,确定this指向,复制[[scope]]属性创建作用域链
  2. 利用arguments一个活动对象,里面具有形参定义,函数声明,变量声明
  3. 将活动对象添加到作用域链的最顶端,作用域链此时由当前函数作用域以及父级作用域组成
  4. 执行函数,若函数在当前作用域下找不到变量,则会沿着作用域链网往上找
  5. 执行完后函数后,会将函数弹出调用栈

1:创建函数,生成函数作用域
2:创建函数的执行上下文,压入执行上下文栈中
3:将函数的作用域复制给函数的执行上下文
4:生成活动对象,声明函数、变量、加入形参
5:将活动对象,放到作用域的最顶端
6:执行函数
7:执行栈 弹出函数执行上下文

Was this page helpful?
0 / 5 - 0 ratings