js中的闭包
含义
闭包函数的意义就是,让子函数返回父函数中的变量,这样一来,一个作用域就有权访问另一个作用域的局部变量。
作用
- 变量作用域范围的延申,能够让其他函数访问函数作用域中的变量(局部变量)
- 创建外部可访问的隔离作用域,避免全局变量污染
缺点,被引用的私有变量不能被销毁,增大了内存消耗,造成了内存泄露
内存泄漏解决方法。使用完变量后手动赋值为null,利用垃圾回收机制回收。
代码
function father() { let num = 123; return function() { let n = 0; return num; // 调用了局部变量num,导致num无法被销毁 } } const re = father(); // 这个时候re就是一个闭包函数; re(); //123 // re保存的是父函数返回的匿名函数,而这个匿名函数调用了num这个局部变量 // 所以num这个局部变量无法被销毁,产生了内存消耗。 // n每次调用都是新创建,所以当匿名函数执行完之后,就一起销毁了。