原理
首先我们需要先理解下js 的作用域,js 的作用分为两种,全局作用域和局部作用域,在局部作用域可以访问全局作用域下的变量,但是在全局作用域下就不能访问局部作用域定义的变量。这个时候闭包就出现了。对,闭包的作用就是为了在全局作用域下可以调用局部作用域下定义的变量的方法
实现:
function a ( ){
var a1 = 10;
return function b ( a1){
console.log(a1+1);
}
}
a 函数内的作用域就是局部作用域,
b 函数为闭包,
如果我们在a 函数外面调用 a1 输出 console.log( a1+1) //undefined1
b 函数为闭包,
如果我们在a 函数外面调用 a1 输出 console.log( a1+1) //undefined1
如果我们调用闭包b 直接执行闭包b 那么 这个时候会输出 //11 再次调用b 函数 //12
这个就是闭包,不知道我是否说明白了
这个就是闭包,不知道我是否说明白了
会导致内存溢出 解决的办法 直接把 变量等于null