闭包
当内部函数被保存到外部时,将会生成闭包。闭包会导致原有作用域不释放,造成内存泄漏。
闭包的作用:
实现公有变量:函数累加器
function add() {
var count = 0;
function demo() {
count++;
console.log(count);
}
return demo;
}
var counter = add();
counter(); // 1
counter(); // 2
可以做缓存(存储结构) ```javascript function test() { var num = 100; function a() { num++; console.log(num); } function b() { num—; console.log(num); } return [a, b]; } var myArr = test(); myArr0; // 101 myArr1; // 100
function eater() { var food = “”; var obj = { eat: function () { console.log(“i am eating “ + food); food = “”; }, push: function (myFood) { food = myFood; } }; return obj; } var eater = eater(); eater.push(“banana”); eater.eat(); // i am eating banana ```
- 可以实现封装,属性私有化
- 模块化开发,防止污染全局变量
闭包的防范:闭包会导致多个执行函数共用一个公有变量,如果不是特殊需求,应尽量防止这种情况发生。