关于js中闭包的简洁介绍

本文解释了闭包的概念,即内层函数如何访问外部函数的变量,以及闭包如何保持变量在内存中。同时讨论了闭包可能导致内存泄漏的问题及其解决方案。通过JavaScript示例展示了闭包的运用和清理方法。
摘要由CSDN通过智能技术生成

闭包让你可以在一个内层函数中访问到其外层函数的作用域。
可以通俗理解成:闭包让我们有权访问另一个函数作用域中内部变量或数据


闭包产生条件:
        (1)外部函数嵌套一个内部函数,且外部函数定义了内部变量
        (2)内部函数使用了外部函数的内部变量

闭包的核心作用:使变量可以驻留在内存,不被回收。这是它的优点,也是缺点:处理不当,会造成内存泄漏
内存泄漏,就是一些你访问不到或用不到的变量,还占据着内存空间,不能被再次利用起来
解决办法:使用完成之后,让函数=null

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // return f2 的原因:在js中,只有内部函数能读取外部函数的内部变量或数据,反之不行
        // return f2 是为了能在f1中使用f2的变量和数据,与闭包没有关系
        
        function f1(){
            var n = 10;
            return function f2(){
                    n++;
                    console.log(n);
            }
        }
        var result = f1(); // f1函数只会在此时使用一次,后面都是直接执行f2,所以n的初始化只会执行一次
        result() // 11
        result() // 12
        result() // 13
        result=null 

    </script>
</body>
</html>

如果本文对你有帮助,希望能得到你的点赞或收藏或关注,这是对我最好的鼓励;

如你有问题或疑惑,欢迎在评论区写下,必将努力解答;

如本文有误区,希望你不吝赐教,让我们共勉!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值