闭包
1、闭包可以简单理解成“定义在一个函数内部的函数“。当其中一个内部函数在包含它们
的外部函数之外被调用时,就会形成闭包。
let fn = (function(){
//局部变量
var count = 0;
return function(){
return ++count;
}})()
2、本质:外层函数嵌套一个内层函数,内层函数作为外层函数的 return 语句的返回
值。外层函数是自调用函数,并且将自身的返回值(也就是内层函数本身)赋给一
个变量。在 JS 执行环境上下文中调用该变量就等价于调用了内层函数,并且在内层
函数中可以访问到外层函数的局部变量又并且外层函数的局部变量不会被多次声
明,此时就形成了一种闭包的写法。
3、特点:
o 函数嵌套函数。
o 函数内部可以引用外部的参数和变量。
o 参数和变量不会被垃圾回收机制回收。
4、用处:
o 常驻内存会增大内存的使用量;
o 读取函数内部的变量;
o 这些变量的值始终保持在内存中,不会在外层函数调用后被自动清除。
5、优点:
o 变量长期驻扎在内存中;
o 避免全局变量的污染;
o 私有成员的存在;
6、缺点:会造成内存泄露
本文探讨了闭包的基本概念,它是函数内部定义并引用外部变量的机制。通过实例解析了闭包的形成过程,其特点包括嵌套函数、持久变量和内存保持。同时介绍了闭包在内存管理和代码组织中的优缺点,以及它如何避免全局污染和实现私有成员。
437

被折叠的 条评论
为什么被折叠?



