JavaScript 闭包

<!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>Document</title>
</head>

<body>
    <script>
        let a = 2;
        function biBao() {
            console.log(a)
        }

        function test() {
            let a = 1;
            return function () {
                console.log(a)
            }
        }
      
        biBao();
        test()();
    </script>
</body>

</html>

1、解释

函数执行时,会形成一个私有上下文(词法作用域),执行完之后,上下文中使用的对象,如果不在该上下文中定义,那么当前上下文就不能被释放,导致闭包

2、作用

   防止全局变量污染

  访问函数内部变量

3、实例

避免变量污染

      let n = 2;
        function test() {
            let n = 3;
            return function () {
                n++;
                console.log(n)
            }
        }
        let biBaoFunc = test();
        biBaoFunc();
        biBaoFunc();
        biBaoFunc();

4、缺点

  占内存

 可能会内存泄漏

原文地址:https://www.cnblogs.com/xiaoqiyaozou/p/15172845.html