什么是js闭包?有什么作用?
一个函数和对其周围状态(lexical environment,词法环境)的引用捆绑在一起(或者说函数被引用包围),这样的组合就是闭包(closure)。也就是说,闭包让你可以在一个内层函数中访问到其外层函数的作用域。在 JavaScript 中,每当创建一个函数,闭包就会在函数创建的同时被创建出来。
闭包的用处:
匿名自执行函数
结果缓存
封装
实现类和继承
Tips:19
闭包及应用场景以及闭包缺点
闭包的应用场景:
匿名自执行函数
结果缓存
封装
实现类和继承
闭包的缺点:
因为闭包的作用域链会引用包含它的函数的活动对象,导致这些活动对象不会被销毁,因此会占用更多的内存。
Tips:54、50、35
闭包的缺点是什么?闭包的应用场景有哪些?怎么销毁闭包
如果要销毁一个闭包,可以 把被引用的变量设置为null,即手动清除变量,这样下次 js 垃圾回收机制回收时,就会把设为 null 的量给回收了。
闭包的应用场景:
匿名自执行函数
结果缓存
封装
实现类和继承
Tips:74、73、56
手写一个闭包函数
function foo() {
var i = 0;
return function () {
console.log(i++);
}
}
var f1 = foo();
f1(); // 0
f1(); // 1
f1(); // 2
Tips:121