闭包 解释与举例

本文详细介绍了JavaScript中的闭包概念,包括其原理——利用作用域嵌套保存局部变量,以及如何通过闭包实现变量的持久化。示例展示了闭包如何避免全局变量并实现变量累加。闭包的特点在于可以外部操作内部数据,但也存在内存占用和数据安全性问题。闭包是连接内部和外部作用域的桥梁,是JavaScript中重要的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

-------------------------------------------------闭包 解释与举例--------------------------------------------------------------


闭包:利用作用域的嵌套,将原本的局部变量,进化成自由(私有)变量的环境   是一种环境 不是一种写法 想办法生成闭包环境     

(重要又不重要的沙雕面试题 实际很少直接使用)

    闭包的原理:
        局部作用域,局部变量的生命周期,变量的朝生暮死
        利用作用域的嵌套,触发计算机的垃圾回收机制(作用域结束 清除局部变量 )
        将原本要删除的变量,在彻底删除之前 暂时保存起来,可以继续使用
    <!-- 垃圾回收机制:将要删除的数据,先暂时存放在一个临时空间内,不立即删除,如果需要再次使用,可以直接找到该数据,继续使用,直到真正不用了,再被删除 -->
  闭包的简单应用 
  外部重复操作  函数内的变量只允许产生局部作用域  无法进行a的累加

function fn(){
    var a = 10;
    a++;
    console.log(a)
}
fn();
fn();

闭包不产生全局变量  且累加a
function fn(){
    var a = 10;
    function fun(){
        a++;
        console.log(a)
    }
    return fun;
}
//https://blog.youkuaiyun.com/hpasdabc?spm=1000.2115.3001.5343
var f = fn();   //先执行一次 申明a 且拿到return 保存到f
f();           // 重复执行里面的函数
f();

闭包的特点:
可以将要删除的数据,保存起来,继续使用,方便
可以在函数外部操作内部的数据

缺点
因为要删除的数据,没有被删除,继续存起来,那么占内存,耗性能
在外部有可能改变内部的数据

闭包就是将作用域内部和外部连接起来的桥梁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值