函数的执行原理

213 阅读1分钟

1.程序加载时:

创建函数执行栈(ECS):保存函数执行顺序的数组
首先压入全局执行环境(全局EC)
全局EC引用着全局对象window
window中保存着全局变量

2.定义函数时:

创建函数对象:封装代码段
在函数中有一个scope(作用域)对象:记录着函数的作用域来自哪里
全局函数的scope对象都是window

3.调用前:

在执行环境栈(ECS)压入新的EC(函数的EC)
创建活动对象(AO):保存着本次函数调用时用到的局部变量
在函数的EC中有一个scope chain(作用域链)属性引用着AO
AO中有个parent属性是scope引用对象

4.调用时:

正是有了前三步,我们才有了变量的使用规则:先使用局部变量,局部没有找全局,全局没有就报错

5.调用完:

函数的EC会出栈,没人引用AO,AO会自动释放,所以局部变量也就自动释放了

函数体执行原理图.png(图片引用自授课老师 - 袍哥)