个人建设网站流程图张家界市住房和城乡建设局网站

张小明 2026/1/11 9:13:06
个人建设网站流程图,张家界市住房和城乡建设局网站,wordpress yzipicc,博客式笑话网站织梦源码拒绝玄学#xff0c;看透本质#xff1a;图解 JavaScript 词法环境与内存引用 很多同学在学习闭包时#xff0c;往往只记住了“子函数可以使用父函数的变量”这个结论#xff0c;却对底层的**“词法环境#xff08;Lexical Environment#xff09;”**知之甚少。 本文将剥…拒绝玄学看透本质图解 JavaScript 词法环境与内存引用很多同学在学习闭包时往往只记住了“子函数可以使用父函数的变量”这个结论却对底层的**“词法环境Lexical Environment”**知之甚少。本文将剥离所有晦涩的术语堆砌通过一段经典代码深入内存底层向你展示**代码逻辑Code、变量数据Data和执行环境Environment**在运行时的真实物理关系。案例代码我们以这段经典的闭包代码为例JavaScript// 全局环境 let a 100 function fun() { let timer 0 // 局部变量 // 定义内部函数 function test() { timer console.log(timer) } return test } // 核心时刻函数执行并返回内部函数 const myTest fun()第一部分直觉的误区为什么你会困惑初学者最容易犯的错误是认为内存结构等同于代码结构。错误的静态视角“因为代码里 test 嵌套在 fun 里所以内存里 test 的数据也死死地包在 fun 里。fun 执行完这块空间就该销毁或者一直死板地存在那里。”这种“俄罗斯套娃”式的直觉如下图无法解释为什么fun执行完了timer还能被访问也无法解释什么是“动态的作用域链”。Code snippet全局内存let a 100fun 的内部空间 (静态嵌套)let timer 0function test 代码第二部分揭秘真相——什么是“词法环境”要理解闭包必须先理解 JavaScript 引擎执行代码时的分离存储原则。在 JavaScript 运行时“代码逻辑”和“状态数据”是分开存放的靠“引用指针”连接。而管理这些状态数据的核心结构就叫词法环境Lexical Environment。1. 核心概念定义一个标准的词法环境由两部分组成环境记录器Environment Record这就是一个“登记表”专门用来存放变量和函数的声明。比如timer 0就记在这里。外部环境引用Outer Reference这是一个“指针”指向父级的词法环境。这就是作用域链的物理实体。2. 运行时拆解变量、函数、代码究竟在哪当执行const myTest fun()这行代码时内存中发生了极其精密的动态构建过程。请配合下方的高维内存模型图来阅读变量存在哪数据当 fun() 被调用时引擎在内存中创建了一个全新的词法环境Lexical Environment。变量 timer 的值 0 被保存在这个环境的环境记录器中。代码存在哪逻辑函数 test 的代码逻辑即函数体内的字符串并不存储在词法环境里而是存储在堆内存Heap 中一个独立的函数对象Function Object里。它们如何相互引用关键这是最关键的一步。当 test 函数对象被创建时引擎会给它装上一个不可见的内部属性 [[Environment]]。这个属性直接指向了 fun 执行时创建的那个词法环境。第三部分一张图看懂内存物理结构下面的 Mermaid 图解展示了fun()执行瞬间的真实内存快照。请重点关注代码存储Heap与环境记录Stack/Context的分离与连接。Code snippet堆内存 (存储函数实体/代码)执行环境栈 (存储变量状态)全局词法环境 (Global LE)fun 函数词法环境 (Fun LE)myTest 引用闭包核心[[Environment]] 指针强引用ƒ fun() 对象实体Code: ...ƒ test() 对象实体Code: timer ...-----------------------[[Environment]]内部插槽环境记录器:timer: 0Outer: - Global LE环境记录:a: 100fun: pointer - func_funmyTest: pointer - func_testOuter: null第四部分总结与顿悟通过上图我们可以回答最初的困惑为什么 fun 执行完timer 不消失看图中的红色粗线。虽然 fun 函数执行结束了但返回的 test 函数对象里有一个 [[Environment]] 指针死死地拉住了 fun 的词法环境。只要 myTest 还在引用 test 对象这个Fun LE方块就永远无法被垃圾回收。代码和环境是如何分离的test 的代码逻辑静静地躺在堆内存里右边而它所需要操作的数据 timer 躺在动态生成的词法环境里左边。两者通过指针跨越内存区域相连。所谓闭包本质上就是一个函数对象代码保留了对它出生地词法环境的引用。理解了这一点你就理解了 JavaScript 内存模型的核心。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

苏通建设集团有限公司网站李江seo

Launcher3深度定制指南:打造个性化Android桌面体验 【免费下载链接】Launcher3 The Launcher3 fork known as "Rootless Pixel Launcher" 项目地址: https://gitcode.com/gh_mirrors/la/Launcher3 Launcher3是一款备受推崇的开源Android启动器项目…

张小明 2026/1/8 10:49:10 网站建设

找合伙人做红木家具网站世界500强企业是什么意思

[算法设计与分析-从入门到入土] 基础算法 个人导航 知乎:https://www.zhihu.com/people/byzh_rc CSDN:https://blog.csdn.net/qq_54636039 注:本文仅对所述内容做了框架性引导,具体细节可查询其余相关资料or源码 参考文章&am…

张小明 2026/1/10 11:48:03 网站建设

网上购物商城网站建设设计网站大全网

第一章:你真的懂Open-AutoGLM量化吗?90%工程师忽略的3个核心细节在深度学习模型部署中,量化已成为提升推理效率的关键技术。Open-AutoGLM作为面向大语言模型自动量化的开源框架,其灵活性和高效性吸引了大量开发者。然而&#xff0…

张小明 2026/1/7 21:18:46 网站建设

网站开发和前端和数据媒体去掉自豪的使用wordpress

在当今无服务器架构的浪潮中,Serverless Express为开发者提供了在Lambda环境中运行Express应用的完美解决方案。通过自定义事件源映射器,您可以突破默认配置的限制,为DynamoDB流处理打造量身定制的转换逻辑。 【免费下载链接】serverless-exp…

张小明 2026/1/11 5:29:35 网站建设

做吉祥物设计看什么网站wordpress映射到外网

跨语言语音合成不再是难题——GPT-SoVITS全面评测 在短视频创作中,你是否曾为无法用母语之外的语言“亲口”讲述内容而烦恼?在无障碍服务场景里,视障用户是否只能接受千篇一律的机械音朗读外文网页?传统文本到语音(TTS…

张小明 2026/1/8 3:33:35 网站建设

能打开各种网站的浏览器推荐品牌推广的方式

Vim 多文件操作与命令执行技巧 在 Vim 操作中,与 shell 的交互十分便捷,只需几个按键就能调用外部命令。以下是一些常用的调用外部命令的方法总结: | 效果 | 命令 | | — | — | | 启动 shell(输入 exit 返回 Vim) | :shell | | 使用 shell 执行 {cmd} | :!{cmd} | …

张小明 2026/1/8 2:22:32 网站建设