一个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 @ 2022-05-16 19:35  槑孒  阅读(19)  评论(0编辑  收藏  举报