让我们一起学习JavaScript闭包吧 闭包是JavaScript中的一个基本概念,每一个认真的程序员都应该对它了如指掌。 互联网上充斥着大量关于“什么是闭包”的解释,却很少有人深入探究它“为什么”的一面。 我发现理解闭包的内在原理会使开发者们在使用开发工具时有更大的把握。所以,本文将致力于讲解闭包是如何工作的以及其工作原理的具体细节。 希望在你能从中获得更好的知识储备,以便在日常工作中更好地利用闭包。让我们开始吧! 什么是闭包? 闭包是 JavaScript (以及其他大多数编程语言) 的一个极其强大的属性。正如在MDN (Mozilla Developer Network) 中定义的那样:
注:自由变量是既不是在本地声明又不作为参数传递的一类变量。(译者注:如果一个作用域中使用的变量并不是在该作用域中声明的,那么这个变量对于该作用域来说就是自由变量)
让我们来看一些例子: Example 1:
在 GitHub 上查看 rawnumberGenerator.js 在以上例子中,numberGenerator 函数创建了一个局部的自由变量 num (一个数字) 和 checkNumber 函数 (一个在控制台打印 num 的函数)。checkNumber 函数没有自己的局部变量,但是,由于使用了闭包,它可以通过 numberGenerator 这个外部函数来访问(外部声明的)变量。因此即使在 numberGenerator 函数被返回以后,checkNumber 函数也可以使用 numberGenerator 中声明的变量 num 从而成功地在控制台记录日志。 Example 2:
上一篇:恢复bios出厂默认值的方法下一篇:声纹识别技术简介
最新评论
72小时资讯榜
2
推荐GitHub开源书籍 —《#高性价比人生指南
生活
1322人已阅读
3
FBI宣布逮捕了黑掉他们系统的黑客组织Shiny
网安动态
5875人已阅读
4
从代码分析到授权争议:一用户用AI破解IDM
业界
1326人已阅读
5
黑客团伙 ShinyHunters 声称攻破 FBI 系统
网安动态
1594人已阅读
6
OpenAI免费向乌克兰开放AI网络防御系统“Da
网安动态
1976人已阅读
社区热门
1
2006年注册的老人泪流满面
2026-10-12
2
━※☆※━★===二〇二六年论坛每日签到帖=
2026-03-13
3
十几年没回来了,回来看看。顺便做个记号
2026-08-15
4
多年以后我又回来了,报道贴
2026-08-11
5
人工智能最终是否替代人类??人类该何去何
2026-07-22
|