美文网首页
【基础知识】计数器:理解自执行函数与闭包

【基础知识】计数器:理解自执行函数与闭包

作者: 前端菜篮子 | 来源:发表于2022-05-13 15:18 被阅读0次
    <html>
        <head></head>
        <body>
            <button onclick="count();">计数器<span id="test">0</span></button>
            <script>
                var count = (
                    function(){
                        let no = 0;
                        return function add() {
                            no++;
                            document.getElementById('test').innerText = no
                            //return no;
                        }
                    }
                )()
            </script>
        </body>
    </html>
    
    

    闭包形成的3个缺一不可的条件:

    1. 函数a中包含函数b,
    2. 函数a中定义的变量(或更上层作用域的,即函数b外部的)被函数b使用;
    3. 函数a返回(return)函数b

    为啥要用闭包,闭包的优缺点

    计数器,顾名思义,就是每点击一次,就需要对应的变量自增一次,
    那如果我们不用闭包的方式,怎么存储该变量呢?
    那就需要定义一个全局变量来实现自增!
    当然现在流行的框架,如vue,可以直接this.count++即可;
    或者呢命名空间啊,用对象包裹啥的也行,哈哈哈😄
    那用闭包有什么缺点呢?
    普通函数作用域内的变量,是在该函数执行结束后,其内部的变量就会被回收;
    而闭包中的变量,如上述案例中的次数no就会一直在内存中;
    那如何回收闭包中的该变量呢?在合适的时机将变量置为null即可

    自执行函数

    格式如:(function(){ })();立即执行且只执行一次;自执行函数一般可以和闭包配合使用。
    在上述案例中,我们的目标是拿到闭包环境下的内部函数,外部函数只是为了产生闭包环境而临时定义的函数,所以...

    相关文章

      网友评论

          本文标题:【基础知识】计数器:理解自执行函数与闭包

          本文链接:https://www.haomeiwen.com/subject/emzyurtx.html