一个JS闭包问题 | 节流防抖

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>闭包问题</title>
</head>
<body>
    <script>
        function fn1() {
            var a = 2;
            function fn2() {
                a++
                console.log(a)
            }
            return fn2
        }
        var f1 = fn1()
        f1() //3
        f1() //4

        var f2 = fn1()
        f2() //3
        f2() //4
    </script>
</body>
</html>

输出结果

3
4
3
4

尚硅谷_JS高级_常见的闭包
问题就是为什么不应该都是输出3,a为什么没有在每次函数调用前被重新赋值?

浅层的理解:
因为return fn2给了f,f没消失,闭包就不会,所以再var一个f,那就会出现两个闭包了。

posted @   槑孒  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示