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>


相关文章
|
6月前
|
Java
JVM之本地内存以及元空间,直接内存的详细解析
JVM之本地内存以及元空间,直接内存的详细解析
408 0
|
6月前
|
JavaScript 前端开发 Java
内存管理和内存泄露(闭包、作用域链)(三)
内存管理和内存泄露(闭包、作用域链)
70 0
|
3月前
|
存储 开发框架 .NET
"揭秘.NET内存奥秘:从CIL深处窥探值类型与引用类型的生死较量,一场关于速度与空间的激情大戏!"
【8月更文挑战第16天】在.NET框架中,通过CIL(公共中间语言)可以深入了解值类型与引用类型的内存分配机制。值类型如`int`和`double`直接在方法调用堆栈上分配,访问迅速,生命周期随栈帧销毁而结束。引用类型如`string`在托管堆上分配,堆栈上仅存储引用,CLR负责垃圾回收,确保高效且自动化的内存管理。
56 6
|
21天前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
194 2
|
24天前
|
存储 JavaScript 前端开发
如何优化代码以避免闭包引起的内存泄露
本文介绍了闭包引起内存泄露的原因,并提供了几种优化代码的策略,帮助开发者有效避免内存泄露问题,提升应用性能。
|
24天前
|
Web App开发 缓存 JavaScript
如何检测和解决闭包引起的内存泄露
闭包引起的内存泄露是JavaScript开发中常见的问题。本文介绍了闭包导致内存泄露的原因,以及如何通过工具检测和代码优化来解决这些问题。
|
2月前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
130 5
|
1月前
|
JavaScript 前端开发 安全
如何避免闭包带来的内存消耗呢
【10月更文挑战第12天】如何避免闭包带来的内存消耗呢
27 0
|
3月前
|
算法 安全 UED
探索操作系统的内核空间:虚拟内存管理
【7月更文挑战第50天】 在现代操作系统中,虚拟内存管理是核心功能之一,它允许操作系统高效地使用物理内存,并为应用程序提供独立的地址空间。本文将深入探讨操作系统虚拟内存管理的机制,包括分页、分段以及内存交换等关键技术,并分析它们如何共同作用以实现内存的有效管理和保护。通过理解这些原理,读者可以更好地把握操作系统的内部工作原理及其对应用程序性能的影响。