做房地产公司网站的费用,装修全包,建设一个网站需要哪些人员参与,简单游戏开发1. 作用域
上一级在执行时#xff0c;内部函数被定义#xff0c;内部函数便生成作用域和作用域链#xff08;拿上一级的环境#xff09;#xff0c;内部函数执行前生成自己的AO#xff0c;并排在头部函数执行结束时#xff0c;AO被销毁#xff08;回到被定义时的状态内部函数被定义内部函数便生成作用域和作用域链拿上一级的环境内部函数执行前生成自己的AO并排在头部函数执行结束时AO被销毁回到被定义时的状态上一级函数销毁时AO被销毁其中含内部函数和其作用域作用域链里存的是AO、GO的引用 每个函数在被定义时就包含了全局上下文GO即使这时函数还没被执行 a函数在被执行的前一刻做预编译 b函数被定义时它的作用域链和a函数是一样的同理a函数被定义时a的作用域链是GO
2. 闭包
闭包的定义闭包是指有权访问另一个函数作用域中的变量的函数并不是只有函数内返回函数的情况才是闭包一个函数和对其周围状态lexical environment词法环境的引用捆绑在一起或者说函数被引用包围这样的组合就是闭包closure。也就是说闭包让你可以在一个内层函数中访问到其外层函数的作用域。在 JavaScript 中每当创建一个函数闭包就会在函数创建的同时被创建出来。
function init() {var name Mozilla; // name 是一个被 init 创建的局部变量function displayName() { // displayName() 是内部函数一个闭包alert(name); // 使用了父函数中声明的变量}displayName();
}
init();闭包拉扯着父级函数的AO不释放闭包的函数运行在哪个环境这个环境就能访问到被拉扯着的AO test2被放到了全局无法跟着test1销毁 内存泄漏内存越来越少 闭包可以做数据缓存 闭包也就是内部能拉扯外部AO的函数能在全局被访问那么直接把它添加到全局也能有一样的效果