• 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)

  • 相关阅读:
    docker部署mysql
    docker安装nginx
    Linux查看日志-grep
    linux系统常用命令
    python爬虫
    unittest中常用的assert语句
    Linux 监控tcp连接数及状态
    linux top命令查看内存及多核CPU的使用讲述
    jmeter的时间戳函数使用
    influxdb基本SQL操作2
  • 原文地址:https://www.cnblogs.com/belongs-to-qinghua/p/11352984.html
Copyright © 2020-2023  润新知