理解闭包的使用

一、什么是闭包?

闭包的定义存在很多种,例如:
1、闭包就是能够读取其他函数内部变量的函数。
2、闭包是指有权访问另一个函数作用域中变量的函数。
3、闭包是指一个函数可以记住其外部变量并可以访问这些变量。
总体而言,闭包是一个函数与创建函数的作用域之间的连接,闭包“关闭”了函数的自由变量。

二、闭包的优点

1.内部函数可以访问外部函数的局部变量

  • 闭包的基本代码格式(示例):
function fun1(){
      var data = 1;
      function fun2(){
        console.log('data:',data); // 1
      }
      return fun2;
}
var fun = fun1();
fun();
  • 如下代码:
    思考下为何会如此输出?
for (var i = 0; i < 5; i++) {
      setTimeout(() => {
        console.log(i++);
      }, 5000);
    }
console.log(i);
输出:
5
5
6
7
8
9
  • 使用闭包的方式可以使得输出结果为0 1 2 3 4
for (var i = 0; i < 5; i++) {
      (function (i) {
        setTimeout(() => {
          console.log(i++);
        }, 5000);
      })(i);
    }
console.log(i);
输出:
5
0
1
2
3
4

二、闭包的缺点

1、变量会驻留在内存中,造成内存损耗问题

解决方法:把闭包的函数设置为null

2、ie 浏览器中会造成内存泄漏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值