闭包的理解

什么是闭包?

在了解闭包之前,我们要清楚js的另一个知识,那就是作用域链。什么是作用域链,比如一个函数里面包含着另一个函数,里面的函数在使用一个变量的时候会在函数自己的作用域内去查找这个变量,如果没有,就会沿着作用域链向上级函数的作用域去查找,这样的一个过程我们就叫做作用域链。

作用域链是可以有函数内部向外部去查找使用需要的变量,但是无法从上到下去查找函数内部的变量,所以这时候就出现了闭包,闭包就是解决这一问题。

  1. 闭包是能读取其他函数内部变量的函数。
  2. 闭包也可以简单定义为一个在函数内部的函数。
  3. 所以,闭包可以理解为函数内部与函数外部连接起来的桥梁。

闭包的特点:

1. 让外部访问函数内部变量变成可能

        2.局部变量会常驻在内存中

        3.可以避免使用全局变量,防止全局变量污染;

function f1(){
            var n = 100
            function f2(){
                n=n+100
                console.log(n);
            }
            return f2
        }
        var num1 = f1()
        num1() // 200

创建一个fn的函数,并且在内部创建一个f2的函数,在正常情况下,在f2中可以访问f1的变量,但是f1不能访问f2中定义的变量,但是通过return将f2作为参数返回给f1,通过f2闭包建立起来与f1的联系,可以访问f1中的变量

闭包总结:

1.闭包是一个可以访问另一个函数内部变量的函数

2.一般的函数在使用完后,内部的变量会被回收,而闭包不会,变量依旧存在于内存中,不会消失。

3.频繁的使用闭包会占用内存,降低CPU性能,但是可以释放内存(在使用完闭包后,手动使变量为null)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值