86-闭包

68 阅读1分钟

闭包

  • 概念:当函数发生嵌套,并且内部函数为外部函数返回值时,称为闭包

形成条件

  • 函数嵌套

    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