4、闭包(含义、内存空间、作用)

简介: 4、闭包(含义、内存空间、作用)

1、什么是闭包


简单一句话概述就是,函数嵌套,内部函数就叫做闭包

闭包作为函数的返回值,赋值给了外部的变量,外部函数运行完成时,内部函数还没有被执行完成,所以外部函数中的变量是不会被销毁的,因此内部函数还可以使用外部函数的变量

闭包的作用:可以用来实现模块化或封装代码


2、为什么会有闭包?


  • 我们在访问函数的时候,不能直接访问内部函数,所以需要在外部函数设置一个返回值,把内部函数作为返回值返回出来,这样,我们外部环境才能使用内部函数,所以才会有闭包这个概念


3、闭包内存空间未被销毁,外部函数变量还保存下来


正常一个函数执行完了,里面的变量就会被销毁。


但是闭包不是,虽然外部函数已经执行完毕。但内部函数赋值给了外部的变量,所以内部函数(这个闭包)还没有被执行完成,它还存储在内存空间,所以外部函数的内存空间不能被销毁,这个外部函数的变量还保存了下来。


4、闭包有什么用?


  • 主要用来封装,将功能放到一个模块中(简称模块化)。


5、闭包代码

  <script>
    /*
    1、什么是闭包?
    简单来说就是,函数嵌套,内部函数就是闭包
    2、为什么要用闭包?
    我们不能直接访问内部函数,所以需要在外部函数设置一个返回值,
    把内部函数作为返回值返回出来,这样,我们外部环境才能用内部函数
    3、闭包的内存空间未被销毁
    正常一个函数执行完了,里面的变量就会被销毁。
    但是闭包不是,虽然外部函数已经执行完毕,但内部函数赋值给了外部的变量,
    所以内部函数(这个闭包)还没有被执行完,它还存储在内存空间,
    所以外部函数的内存空间不能被销毁,这个外部函数的变量还保存了下来。
    所以才可以输出num值
    */
    function outerFun() {
      let num = 10;
      function innerFun() {
        console.log(num);
      }
      return innerFun;
    }
    // 全局环境下拿到内部函数,相等于fun:innerFun
    let fun = outerFun();
    // 直接调用内部函数
    fun();
  </script>


相关文章
|
5月前
|
Java
JVM之本地内存以及元空间,直接内存的详细解析
JVM之本地内存以及元空间,直接内存的详细解析
321 0
|
5月前
|
JavaScript 前端开发 Java
内存管理和内存泄露(闭包、作用域链)(三)
内存管理和内存泄露(闭包、作用域链)
60 0
|
5月前
|
自然语言处理 JavaScript 前端开发
内存管理和内存泄露(闭包、作用域链)(二)
内存管理和内存泄露(闭包、作用域链)
46 0
|
2月前
|
存储 开发框架 .NET
"揭秘.NET内存奥秘:从CIL深处窥探值类型与引用类型的生死较量,一场关于速度与空间的激情大戏!"
【8月更文挑战第16天】在.NET框架中,通过CIL(公共中间语言)可以深入了解值类型与引用类型的内存分配机制。值类型如`int`和`double`直接在方法调用堆栈上分配,访问迅速,生命周期随栈帧销毁而结束。引用类型如`string`在托管堆上分配,堆栈上仅存储引用,CLR负责垃圾回收,确保高效且自动化的内存管理。
51 6
|
13天前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
81 5
|
2月前
|
算法 安全 UED
探索操作系统的内核空间:虚拟内存管理
【7月更文挑战第50天】 在现代操作系统中,虚拟内存管理是核心功能之一,它允许操作系统高效地使用物理内存,并为应用程序提供独立的地址空间。本文将深入探讨操作系统虚拟内存管理的机制,包括分页、分段以及内存交换等关键技术,并分析它们如何共同作用以实现内存的有效管理和保护。通过理解这些原理,读者可以更好地把握操作系统的内部工作原理及其对应用程序性能的影响。
|
3月前
|
Java fastjson C++
JVM内存问题之JVM中元空间持续增长并且GC无法释放的原因可能是什么
JVM内存问题之JVM中元空间持续增长并且GC无法释放的原因可能是什么
|
3月前
|
运维 DataWorks 安全
DataWorks产品使用合集之如何查看空间资源、CPU、内存和存储空间容量
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
4月前
|
算法 Java
垃圾回收机制(Garbage Collection,GC)是Java语言的一个重要特性,它自动管理程序运行过程中不再使用的内存空间。
【6月更文挑战第24天】Java的GC自动回收不再使用的内存,关注堆中的对象。通过标记-清除、复制、压缩和分代等算法识别无用对象。GC分为Minor、Major和Full类型,针对年轻代、老年代或整个堆进行回收。性能优化涉及算法选择和参数调整。
59 3

热门文章

最新文章