1.什么是闭包?
当函数可以记住并访问所在的词法作用域时,就产生了闭包,即使函数是在当前词法作用域之外执行。
直接上代码:
- //闭包
- function test(){
- var arr = [];
- for (var i = 0; i < 10; i++) {
- //闭包的写法就是 一个圆括号里面包了一个匿名函
- // 把需要保存的值,通过参数传递
- (
- function(j)
- {
- arr[j] = function(){
- document.write(j + " ");
- }
- }(i)
- )
- }
- return arr;
- }
- var myArr = test();
- for (var i = 0; i < 10; i++) {
- myArr[i]();
- }
2.闭包的作用:
就是访问函数内部的局部变量。函数内部的所有变量、数据,在函数执行完毕时,就全部销毁掉,一级函数返回二级函数,在外部保存一下二级函数,那么二级函数就不会被释放,我们就可以继续访问一级函数内部的变量和数据。