以下对闭包(closure)理解正确的有 ABCD

发布时间 2023-11-10 22:54:57作者: 龙陌

以下对闭包(closure)理解正确的有 ABCD

A
闭包是指有权访问另一个函数作用域中变量的函数;
B
函数内再嵌套函数,返回到外部形成闭包;
C
内部函数可以引用外层的参数和变量
D
参数和变量不会被垃圾回收机制回收

闭包的作用

​ 1 可以读取函数内部的变量

​ 2 可以把变量始终保存在内存中

​ 闭包的写法

​ 1 一个函数(即外部函数)里面包含另一个函数(即内部函数),并且return返回这个内部函数, 然后内部函数在定义内部函数之外的作用域被调
用,这时的内部函数就是一个闭包了。

​ 2 内部函数引用了外部函数的变量,这个变量不会被销毁,因为闭包需要这个变量, 所以通过闭包可以访问闭包保存的变量

                               function foo(){ 
                                         var n = 1; 
                                         function innerFoo(){ 
                                                    n += 1;
                                                    console.log(n);
                                         } 
                                        return innerFoo; 
                                } 
                                var func = foo(); 
                                func(); // 产生闭包innerFoo(),变量n保存在内存中 func();

​ 闭包的缺点 : 因为闭包的变量保存在内存中,内存泄漏,对内存的消耗很大,所以不要滥用闭包

​ 闭包常用的地方:

​ 1 es5 for循环事件监听

​ 2 函数里使用了定时器

​ 3 封装许多高级的功能集 减少闭包使用可以用立即执行函数传递变量