老师讲课内容:
函数生命周期:
1. 开始执行前:
创建执行环境栈(数组): 临时保存正在执行的函数的执行环境
向执行环境栈中压入第一个默认函数main()
创建全局作用域对象window
2. 定义函数时:
创建函数对象,封装函数定义
声明函数名变量,引用函数对象
函数对象的scope属性引用回创建函数时的作用域
3. 调用函数时:
ECS中压入一个新的元素(执行环境)记录新函数的调用
创建一个活动对象,保存本次函数调用用到的局部变量
ECS中的新执行环境元素,引用活动对象
活动对象中的parent属性引用函数的scope指向的父级作用域对象
执行过程中: 优先使用活动对象中的局部变量
局部没有,才延parent向父级作用域找
4. 函数调用后:
执行环境栈中本次函数的执行环境出栈
导致活动对象被释放
导致局部变量一同释放
图示:
前三步
第四步
个人理解函数生命周期就是函数的作用范围即作用域的问题,js里的函数可能只在这一个js里有用、还可能在其他地方也可以用。不过我对javascript不太熟,不知道有没有帮到你!
js程度的生命周期是从浏览器发出请求到再次刷新或跳转页面这个时间段,生命周期结束后,js定义的变量和对象绝大部分会被注销,资源得到释放
javascript 啊,页面打开就有了,页面关掉就没了