JavaScript 基础四:闭包

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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值