闭包
- 概念:当函数发生嵌套,并且内部函数为外部函数返回值时,称为闭包
形成条件
-
函数嵌套
function outer(){ function inner(){ } } -
内部函数为外部函数返回值
//写法一 function outer(){ function inner(){ } return inner } //写法二 function outer(){ return function(){ } }
作用
-
避免变量的污染(变量私有化)
-
延长变量作用事件:当js检测到内部函数还在使用,那么会将变量保存在闭包空间中,即使外部函数已经销毁,只要闭包空间还在,那么内部函数可以一直使用这个变量
// 计数器 function outer() { var count = 0 function inner() { count++ console.log(count); } return inner } //使用计数器 let res = outer res()//1 res()//2 res()//3 res()//4 res()//5