js的闭包浅谈(未完成)

91 阅读1分钟

闭包是什么

一个函数就是一个闭包,闭包可以访问他外部,但是外部不能访问闭包内的东西。一个函数a,能访问并改变一个全局变量,a是一个闭包;一个函数a内的函数b,能访问并修改函数a的局部变量,b也是一个闭包。所以,闭包的重点是是否能够修改在他外部的变量。 定义在函数内部的函数
缺点1:数据会一直存在内存,占用内存,容易卡死;
缺点2:会在父函数外部,改变父函数内部的变量值。

    <script>
         var add; //全局变量,谁都能用
         function fn1(){
             let num = 1; //fn1的局部变量,只有fn1内部能用
             add = function(){ //add是在fn1内的闭包
                num++
             }
             return function fn2(){
                 document.write(num);
             }
         }
         let fn2 = fn1(); //执行fn1(),未执行add,num=1
         fn2();//
         add();//
         fn2();//
     </script>