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

Posted ginahan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了闭包的特性(只做了粗略整理)相关的知识,希望对你有一定的参考价值。

一、概念

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

自己的理解:它主要是利用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;
              }
        }
}

 

以上是关于闭包的特性(只做了粗略整理)的主要内容,如果未能解决你的问题,请参考以下文章

RabbitMQie消息列队整理

公司来了一位阿里P7大佬,只做了6个步骤,代码性能瞬间翻倍

公司来了一位阿里P7大佬,只做了6个步骤,代码性能瞬间翻倍

Spark闭包与序列化

ReactJs学习笔记01

这个代码片段究竟做了啥?