全局变量:能够在任何地方反复使用的变量,但可能会形成全局污染数组
局部变量:不能够重复使用,只在函数中使用闭包
闭包:优势:可重用变量,又能够保护变量不受污染的机制函数
缺点:比通常的函数更占用内存3d
闭包流程图片对象
完成外层循环调用blog
3.再次调用内层循环生命周期
4.调用结束后图片
做用域:变量的可用范围内存
包含全局变量作用域
包含局部变量,在函数体内,局部变量的优先级高于同名的全局变量。
函数生命周期:
1. 开始执行前(生命提早阶段)
建立执行环境栈(数组):临时保存正在执行的函数的执行环境
向执行环境中添加第一个默认程序main(),该方法建立出一个全局做用域的对象window
2.定义函数时
建立函数对象,封装函数的定义
声明函数变量,引发了函数对象,函数对象的scope属性引用回,建立函数时的做用域
3.调用函数时
在ECS中加入一个新的元素并记录新函数的调用
建立一个活动对象,保存本次调用用到的局部变量
ECS中的新执行环境元素引用活动对象
活动对象中的parent属性引用函数的scope指向副局做用域对象
(前提是活动做用域中没有局部变量,才沿着parent向父级做用域找)
4. 调用函数后
执行环境栈中本次函数的执行环境出栈
致使活动对象被释放,致使局变量一同释放
做用域链
右多级做用域连续引用造成的链式结果
掌握一切变量的使用顺序 :先在局部照,没有则延做用域链向父级做用域中找