闭包的特性(只做了粗略整理)

蓝咒 提交于 2019-12-01 05:29:10

一、概念

闭包是有权访问另一个函数作用域中变量的函数

自己的理解:它主要是利用windows才是匿名函数功能执行的环境的特性,通过在函数体内创建匿名函数,然后返回函数的方式,将原本本应该在函数体内执行完就销毁的变量保存了下来,这些被保存下来的变量,会一直存在,直到闭包不存在为止,当然也可以通过闭包名=null来释放掉闭包

二、闭包的特性

闭包只能取得包含函数中的任何变量的最后一个值

function arrFunc(){
     var arr=[];
     for(var i = 0;i<10;i++){
         arr[i] = function(){
            return i;
         };
    }
    return arr;   //输出10个10,原因是:arrFunc执行完后,其作用域被销毁,但它的变量对象仍保存在内存中,可以被匿名函数访问到
}        

修改:

function arrFunc(){
     var arr=[];
     for(let i = 0;i<10;i++){  //let是块级作用域,i为0时,执行完毕就销毁了
         arr[i] = function(){
            return i;
         };
    }
    return arr;   
}

3、闭包会造成的问题

内存常驻、内存泄漏

4、闭包的应用:

设置私有变量

5、实现add(1)(2)(3)

function sum(a){
        return function(b){
              return function(c){
                    return a+b+c;
              }
        }
}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!