zoukankan      html  css  js  c++  java
  • JavaScript 闭包

    一、定义

      谈及闭包这个概念首先要明白为什么需要使用闭包。我们在编写代码的过程中,一定会遇到多人开发的问题,既然是多人开发,变量的命名就很可能会重复,为了解决这个问题就提出了闭包的概念。通过闭包就可以实现在函数外通过一定条件操作局部变量的目的。

    二、组成

      闭包由两部分组成:内层函数和内层函数所处的作用域(即有函数的嵌套才构成闭包),比如下面inner函数和其所处的作用域就构成了闭包。

    function foo() {
        var n = 456;
        function inner() {
          n += 1;
          return n;
        }
        return inner;
    }
    var inner = foo();
    var ret = inner();
    ret = inner();
    console.log(ret)

      上面这段代码的结果是458,可以看到在外部inner函数被调用执行了两次,第二次变量值在第一次的基础上+1,就可以看出,变量n在函数执行后仍然存储在内存中,而没有回收。

    三、优缺点

    • 优点(作用):隔离私有空间,防止全局污染;可以在函数外面有条件访问内部变量;延长变量的生命周期(能够延长也是因为变量没有被回收)
    • 缺点:由于内层函数在外部被调用,所有外层函数内的局部变量不能回收(一直保存在内存中),这就会造成内存被占用严重的问题,在IE浏览器中严重的话会发生内存泄漏。

    四、内存泄漏问题解决方案

      对变量在外层函数内进行手动释放(置为null)

  • 相关阅读:
    信号量的简单使用
    [Unity 3D] Unity 3D 性能优化(二)
    Android 开机动画源码分析
    关于FTP操作的功能类
    ArcGIS Engine 改变线IPolyline的方向
    使用ORACLE SQL Tuning advisor快速优化低效的SQL语句
    Linux CPU 负载度量公式
    Java垃圾回收机制
    常用的shell命令整理
    UVa340
  • 原文地址:https://www.cnblogs.com/belongs-to-qinghua/p/11352984.html
Copyright © 2011-2022 走看看