你对闭包的理解?优缺点?

简介: 你对闭包的理解?优缺点?

闭包就是能够读取其他函数内部变量的函数


三大特性:

  • 函数嵌套函数。
  • 函数内部可以引用外部的参数和变量。
  • 参数和变量不会被垃圾回收机制回收。


优点:

  • 希望一个变量长期存储在内存中。
  • 避免全局变量的污染。
  • 私有成员的存在。


缺点:

  • 常驻内存,增加内存使用量。
  • 使用不当会很容易造成内存泄露。


示例:


function outer() {
    var name = "jack";
 
    function inner() {
        console.log(name);
    }
    return inner;
}
outer()(); // jack
function sayHi(name) {
    return () => {
        console.log(`Hi! ${name}`);
    };
}
const test = sayHi("xiaoming");
test(); // Hi! xiaoming


虽然 sayHi 函数已经执行完毕,但是其活动对象也不会被销毁,因为 test 函数仍然引用着 sayHi 函数中的变量 name,这就是闭包。


但也因为闭包引用着另一个函数的变量,导致另一个函数已经不使用了也无法销毁,所以闭包使用过多,会占用较多的内存,这也是一个副作用。

相关文章
|
7月前
|
存储 人工智能 安全
科技云报到:“龙虾”OpenClaw狂欢之下,需要一针清醒剂
《科技云报到》原创深度观察:国产AI智能体OpenClaw(“龙虾”)爆火出圈,国内话题播放超数十亿,成“国民级”现象;但海外却反响寥寥——本质是市场阶段错位:国内填补“能落地AI”空白,硅谷已处红海。其“一键提效”背后实则门槛不低、安全隐忧突出。热潮之下,更需理性审视能力边界与数据风险。(239字)
402 1
|
开发工具 git
在码云上新建一个仓库,并且使用git上传代码步骤
在码云上新建一个仓库,并且使用git上传代码步骤
1396 0
|
9月前
|
人工智能 架构师 API
智能体来了,智创未来背后隐藏着哪些新趋势?
2024年迈入AI Agent时代:从单体大模型走向多智能体协作、端侧轻量化部署与Agent即操作系统。告别“单打独斗”,开发者需掌握Multi-Agent架构、SLM优化及Agent-OS范式,主动参与智能生产力重构。(239字)
|
人工智能 架构师 算法
人工智能+:职业价值的重构与技能升级
当“人工智能+”成为产业升级标配,职业价值正被重新定义。这并非简单岗位替代,而是人机协作新模式的诞生。AI接管重复性任务后,从业者可专注创造性活动,职业“含人量”不降反升。未来高价值岗位集中在技术赋能、场景创新与价值监督三层面,需跨界人才、流程架构师及伦理师等新角色。把握机遇需重构学习逻辑,强化人机协作实训与伦理素养,发展放大人类独特性的能力,构建不可替代的“人类+”优势。
|
Web App开发 数据安全/隐私保护 Python
抖音快手小红书哔哩哔哩,批量发布作品笔记视频工具,自动发布作品上传笔记视频【python】
这个工具实现了四大平台的视频批量上传功能,包含完整的异常处理和日志记录。使用时需要配置
|
SQL 前端开发 Java
深入分析 Spring Boot 项目开发中的常见问题与解决方案
本文深入分析了Spring Boot项目开发中的常见问题与解决方案,涵盖视图路径冲突(Circular View Path)、ECharts图表数据异常及SQL唯一约束冲突等典型场景。通过实际案例剖析问题成因,并提供具体解决方法,如优化视图解析器配置、改进数据查询逻辑以及合理使用外键约束。同时复习了Spring MVC视图解析原理与数据库完整性知识,强调细节处理和数据验证的重要性,为开发者提供实用参考。
695 0
|
存储 安全 Android开发
深入探索安卓与iOS的安全性对比
在这篇文章中,我们将探讨安卓和iOS两大操作系统在安全性方面的不同之处。通过分析它们的安全架构、更新机制以及用户数据保护策略,我们可以更好地理解它们各自的优势和不足。无论是对于普通用户还是专业开发者,了解这些信息都是非常有益的。
|
数据采集 机器学习/深度学习 算法
【机器学习】数据清洗之识别异常点
【机器学习】数据清洗之识别异常点
1253 1
|
存储 安全 Linux
Linux sync 指令的作用
Linux sync 命令的作用是确保所有未写入磁盘的数据被立即同步至物理存储介质上,以保护文件系统的一致性和防止意外关机时的数据丢失。虽然 sync 在日常交互式使用中可能不常直接调用,但许多高级操作或脚本中会包含此命令来保证数据安全。
1096 0
|
Java 关系型数据库 MySQL
开题报告-基于Spring Boot 的重修课程信息管理系统
开题报告-基于Spring Boot 的重修课程信息管理系统
443 0