javascript闭包的理解
一、闭包的含义
自己理解:返回的是一个函数,函数中有需要的变量,这些变量不能被直接访问
- 官方说法:一个拥有许多变量和绑定了这些变量的环境的函数,外部访问不到这些变量。
- 实际就是函数a内部有定义了一个函数b,由于javascript特有的链式作用域,外部不能读取不到函数a的变量,函数b可以读取函数a的变量,再函数a中返回函数b,外部就能用到函数a的变量了
- 注意:闭包中的变量不会主动被释放
简单的闭包如下:
function f1(){
var n = 100;
return function f2(){
alert(++n);
}
}
f1()()
二、闭包的作用
- 读取函数内部变量
- 可以让局部变量保存到内存中,实现变量数据共享
三、闭包可能引起的问题
- 滥用闭包会使内存增大,最好是在退出函数之前把不适用的局部变量删除
- 容易造成内存泄漏
四、自执行匿名闭包
自执行函数,即定义和调用合为一体。我们创建了一个匿名的函数,并立即执行它,由于外部无法引用它内部的变量,因此在执行完后很快就会被释放,关键是这种机制不会污染全局对象
- 第一种:
function closure() {
// 自执行
(function(){
console.log("aaa");
})();
}
closure()
- 第二种
function closure() {
// 自执行
(function(){
console.log("aaa");
}());
}
closure()
本文解析了JavaScript闭包的基本概念,包括闭包的形成原理、其在读取变量和数据共享中的应用,以及可能带来的内存管理问题。通过实例展示了自执行匿名函数如何利用闭包保护内部变量。
458

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



