闭包函数的实现
闭包的常见创建方式就是在一个函数内部创建另一个函数,通过另一个函数访问这个函数的局部变量。为了让大家更加清楚闭包函数的实现,下面我们通过代码进行演示。
1 function fn() {
2 var times = 0;
3 var c = function () {
4 return ++times;
5 };
6 return c;
7 }
8 var count = fn(); // 保存fn()返回的函数,此时count就是一个闭包
9 // 访问测试
10 console.log(count()); // 输出结果:1
11 console.log(count()); // 输出结果:2
12 console.log(count()); // 输出结果:3
13 console.log(count()); // 输出结果:4
14 console.log(count()); // 输出结果:5
上述第3~5行代码,利用闭包函数实现了在全局作用域中访问局部变量times,并让变量的值始终存储在内存中。第8行代码调用fn()函数后,接下来将匿名函数的引用返回给count变量,且匿名函数中使用了局部变量times。因此,局部变量times不会在fn()函数执行完成后被JavaScript回收,依然保存在内存中。