闭包
闭包是指有权访问另一个函数作用域中的变量的函数
- 一个函数里面嵌套另外一个函数。嵌套(内部)函数对其容器(外部)函数是私有的。它自身就形成了一个闭包。
- 一个闭包是一个可以自己拥有独立的环境与变量的的表达式(通常是函数,因为ES6有了块级作用域的概念)。
function t2() {
var b = 100;
function t3() {
return ++b
}
return t3;
}
var t4 = t2() // 函数t2 被赋给了变量 t4 t4是个全局变量 不会被销毁 所以相当于 t3 不会销毁 也会存在
console.log(t4()) //101
console.log(t4()) //102
解释:t2在赋给 t4 之前 t2被执行一次(因为’t2()’),在t2中 返回t3 而t3在t2中相当于全局作用域 ,形成闭包,t4是个全局变量 不会被销毁 所以相当于 t3 不会销,也会存在 所以对于b的引用一直存在
js垃圾回收
- 在javascript中,如果一个对象不再被引用,那么这个对象就会被GC回收;
- 如果两个对象互相引用,而不再被第3者所引用,那么这两个互相引用的对象也会被回收。
闭包好处
- 希望一个变量长期驻扎在内存中
- 避免全局变量的污染
- 私有成员的存在

126

被折叠的 条评论
为什么被折叠?



