4、js - 闭包

news2025/1/10 21:28:27

1、闭包的概念

闭包:函数嵌套函数,内层函数访问了外层函数的局部变量。

// 闭包    
function func1() {
    let a = 9;
    let b = 8;
    function func2() {
        console.log("a", a); // a 9
    }
    func2();
}
func1();

分析:

需要访问的变量会被放到闭包空间 Closure ,比如上面的变量a。

闭包空间不会随着当前函数的结束而释放:上面的func1()执行完后,变量b已经被释放了,但是变量a不会被释放,又因为a不会被释放,也导致了内存泄漏😮‍💨

内存泄漏:本该被回收的内存没有被回收就是内存泄漏。

但是也要看有没有必要产生内存泄漏,如果产生的是bug就不可以,但是上面的案例是语言特性本身的特点导致的内存泄漏,是我们无法阻止的泄漏,所以必须用闭包的时候还是得用闭包。

控制台如何查看闭包空间:

2、闭包的作用

实现变量的私有化,让外面的人无法修改内部的变量。

举例:如果变量count不想被外面的人修改,可以放在闭包空间里面。

function getCount() {
    let count = 0;
    function fn() {
        count++;
        console.log(`count被调用了${count}次`);
    }
    return fn;
}

const result = getCount();
result(); // count被调用了1次
result(); // count被调用了2次
result(); // count被调用了3次

3、闭包会产生什么现象或问题

(1)由于闭包空间的内存无法及时地释放,因此会导致内存泄漏,但这个又是必要的,也是闭包的一个特点。

(2)本该被释放的变量,无法及时释放,会存在闭包空间中,让这个变量可以更久远地使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/561748.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用YOLOv5和MobileViTs骨干网络革新目标检测:高效准确AI视觉的未来

目录 一、YOLOv51、YOLOv5介绍2、YOLOV5的整体架构图3、MobileViT介绍 二、YOLOv5与MobileViT的结合1、YOLOv5网络结构回顾2、MobileViT网络结构介绍3、YOLOv5替换骨干网络为MobileViT的优势 三、MobileViT的细节与实现1、ViT与MobileNetV3的结合2、MobileViT网络结构细节3、Mo…

最高奖金100万!第二届广州·琶洲算法大赛火热报名中

第二届广州琶洲算法大赛以“优选AI算法 让世界更智能”为主题,聚焦前沿 AI 技术,推进算法领域的学术交流、人才培养、技术发展及应用,面向算法领域的开发者、创业机构、企事业单位,招募具有原创性、独创性、引领性的算法模型和应用…

c++ 11标准模板(STL) std::map(二)

定义于头文件<map> template< class Key, class T, class Compare std::less<Key>, class Allocator std::allocator<std::pair<const Key, T> > > class map;(1)namespace pmr { template <class Key, class T, clas…

【JavaScript】ES6新特性(3)

10. Symbol 使用 Symbol&#xff0c;表示独一无二的值 每个 Symbol 是不一样的 不能进行运算 可以显式调用 toString() 可以隐式转换 boolean <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-eq…

华为OD机试真题 Java 实现【寻找相似单词】【2023Q2 200分】

一、题目描述 给定一个可存储若干单词的字典&#xff0c;找出指定单词的所有相似单词&#xff0c;并且按照单词名称从小到大排序输出。 单词仅包括字母&#xff0c;但可能大小写并存&#xff08;大写不一定只出现在首字母&#xff09;。 相似单词说明&#xff1a; 给定一个…

TCP是面向字节流的协议

TCP字节流 之所以会说 TCP 是面向字节流的协议&#xff0c;UDP 是面向报文的协议&#xff0c;是因为操作系统对 TCP 和 UDP 协议的发送方的机制不同&#xff0c;也就是问题原因在发送方。 为什么 UDP 是面向报文的协议&#xff1f; 当用户消息通过 UDP 协议传输时&#xff0c;…

从C语言到C++_12(string相关OJ题)

上一篇已经讲了string类的接口函数&#xff0c;然后根据查文档刷了一道力扣415字符串相加&#xff0c; 这篇继续跟着查文档来刷力扣题&#xff0c;体会C刷题的方便。 目录 917. 仅仅反转字母 - 力扣&#xff08;LeetCode&#xff09; 代码解析&#xff1a; 387. 字符串中的…

SSRS rdlc报表 一 创建报表

环境 vs2019 fromwork4.5 第一步 安装rdlc报表插件 vs2019使用rdlc&#xff0c;需要安装扩展插件&#xff0c;扩展→扩展管理→联机&#xff0c;搜索rdlc&#xff0c;安装Microsoft RDLC Report Designer&#xff0c;我在安装过程中&#xff0c;安装了很久都没安装成功&…

构建高可用性的核心服务层:Coupang电子商务应用程序的技术实践

随着Coupang电子商务平台用户数量的快速增长&#xff0c;构建一个高可用性的核心服务层成为了关键任务。本文将介绍Coupang如何通过统一的NoSQL数据存储、缓存层和实时数据流等技术和策略&#xff0c;构建一个高可用性的核心服务层&#xff0c;以满足日益增长的数据流量需求&am…

保姆式教学--教室友从买服务器到怎么搭建内网隧道

本文转载于&#xff1a;https://blog.csdn.net/qq_39739740/article/details/127604642 一、购买云服务器 怎么购买&#xff1f; 三个主流厂商&#xff1a;华为云、腾讯云、阿里云 --------拿阿里云举例。 首先第一步、我们要百度搜索 阿里云→进入官网→选择最便宜的服务器&…

python+django音乐推荐网站vue

为此开发了本音乐推介网站 &#xff0c;为用户提供一个基于音乐推介网站&#xff0c;同时方便管理员&#xff1b;首页、个人中心、用户管理&#xff0c;类型信息管理、乐器类型管理、歌曲信息管理、戏曲信息管理、MV专区管理、付费音乐管理、订单信息管理、音乐文件管理、论坛管…

JavaSE基础(七)—— 常用API(String、 ArrayList)

1.API 1.1API概述 什么是API ​ API (Application Programming Interface) &#xff1a;应用程序编程接口 java中的API ​ 指的就是 JDK 中提供的各种功能的 Java类&#xff0c;这些类将底层的实现封装了起来&#xff0c;我们不需要关心这些类是如何实现的&#xff0c;只需…

阿里云/dev/vda1磁盘空间占满的解决过程

1.查看文件系统系统的占有量 使用df -h查看了下 2.查看本目录占据多少磁盘空间 du -sh 3.在cd /目录下 du -sh查看各个目录占据多少空间 d 然后使用 du -sh *查看具体文件差距多少空间逐一排查最后把占据大的文件删除掉即可.

Elasticsearch:使用字节大小的向量节省空间 - 8.6

作者&#xff1a;Jack Conradson, Benjamin Trent Elasticsearch 在 8.6 中引入了一种新型向量&#xff01; 该向量具有 8 位整数维度&#xff0c;其中每个维度的范围为 [-128, 127]。 这比具有 32 位浮点维度的当前向量小 4 倍&#xff0c;这可以节省大量空间。 你现在可以通…

【哈士奇赠书活动 - 24期】-〖前端工程化:基于Vue.js 3.0的设计与实践〗

文章目录 ⭐️ 赠书 - 《前端工程化&#xff1a;基于Vue.js 3.0的设计与实践》⭐️ 内容简介⭐️ 作者简介⭐️ 精彩书评⭐️ 赠书活动 → 获奖名单 ⭐️ 赠书 - 《前端工程化&#xff1a;基于Vue.js 3.0的设计与实践》 ⭐️ 内容简介 本书以Vue.js的3.0版本为核心技术栈&#…

Python自动化办公对每个子文件夹的Excel表加个表头(Excel不同名)(下篇)

点击上方“Python爬虫与数据挖掘”&#xff0c;进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 昭阳殿里恩爱绝&#xff0c;蓬莱宫中日月长。 大家好&#xff0c;我是皮皮。 一、前言 上一篇文章&#xff0c;我们抛出了一个问题&#xff0c;这篇文章…

发挥CWPP在零售行业安全关键价值

新钛云服已累计为您分享747篇技术干货 CWPP产品对于零售行业安全有关键价值&#xff0c;可以极大提升零售行业安全水平&#xff0c;是零售行业必备的安全产品。 零售行业的特点 零售行业的特点是实时在线、数据有独特价值&#xff0c;安全挑战是缺乏安全投入和人员。 实时在线方…

推荐 5 月份炫炫炫的 GitHub 项目

推荐 6 个五月份比较火的开源项目。因为近期 AI 项目的火爆&#xff0c;每天 GitHub 热榜都被 AI 项目占据&#xff0c;后续开源项目会同时盘点 AI 和其他分类的开源项目。 本期推荐开源项目目录&#xff1a; 1. 多合一聊天机器人客户端&#xff08;AI&#xff09; 2. 数据库场…

蓝库云|生产报工系统对制造业的作用,能给企业带来的质的飞跃

生产报工系统&#xff0c;对于做制造业的企业来说是再熟悉不过的软件系统了&#xff0c;不仅可以令制造企业可以快速响应客户需求&#xff0c;根据客户订购要求进行生产计划管理&#xff0c;还能生产报工可以帮助制造企业提升生产效率、提高产品质量、改善生产计划和提高客户满…

企业级应用如何用 Apache DolphinScheduler 有针对性地进行告警插件开发?

点击蓝字 关注我们 作者 | 刘宇星 Apache DolphinScheduler的2.0.1版本加入了插件化架构改进&#xff0c;将任务、告警组件、数据源、资源存储、注册中心等都将被设计为扩展点&#xff0c;以此来提高 Apache DolphinScheduler 本身的灵活性和友好性。在企业级应用中不同公司的告…