社区
JavaScript
帖子详情
JavaScript闭包是如何把变量保存在内存中的?
dongjunhui2010
2015-06-27 03:51:02
如题?只要简要说说就行了
...全文
576
3
打赏
收藏
JavaScript闭包是如何把变量保存在内存中的?
如题?只要简要说说就行了
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
forwardNow
2015-06-27
打赏
举报
回复
如果是C语言, 一个函数的局部变量定义在CUP的栈中, 当函数执行完毕返回后局部变量的确不存在了。 作用域 JavaScript是基于词法作用域的语言: 通过阅读包含变量定义在内的数行源码就能知道变量的作用域。 全局变量在程序中始终是有定义的(有效的), 局部变量在声明它的函数体以及嵌套的函数内始终是有定义的(有效的)。 作用域链 如果将局部变量看做是某个对象的属性, 则可换个角度解读变量作用域. 每一段JavaScript代码(全局代码、函数) 都有一个与之相关联的作用域链, 这个作用域链是一个 对象列表 或 链表, 这组对象(链上的对象)定义了这段代码"作用域中"的变量 变量解析 当JavaScript需要查找变量x的值时, 它会从链中的第一个对象开始查找, 如果这个对象有一个名为x的属性, 则使用这个属性值, 否则, 查找链上的下一个对象, 以此类推。 如果作用域链上没有任何一个对象含有属性x, 则认为这段代码的作用域链上不存在x, 并最终抛出一个引用错误异常(ReferenceError) 说明 在JavaScript的最顶层代码中(不包含在任何函数内的代码), 作用域链由一个全局对象(window对象)组成. 在不包含嵌套的函数体内,作用域链上有两个对象: 1, 定义函数参数和局部变量的对象; 2, 全局对象。 在一个嵌套的函数体内,作用域链上至少有三个对象 当定义一个函数时, 它实际上保存一个作用域链. 当调用这个函数时 它创建一个新的对象来存储它的局部变量, 并将这个对象添加至保存的那个作用域链上 同时创建一个新的更长的表示函数调用域的"链"
KK3K2005
2015-06-27
打赏
举报
回复
每个js函数运行后都有一个context环境 存放当前的数据
精通
JavaScript
(jQuery之父力作)『高清晰』.pdf
这本书不仅涵盖了
JavaScript
的基础语法,如
变量
、数据类型、流程控制、函数等,还深入探讨了高级特性,如
闭包
、原型链、异步编程等。通过学习本书,读者能够掌握
JavaScript
的精髓,提升编程技巧。 "Prototype"和...
JS
闭包
|谈谈对
闭包
的理解?什么是
闭包
?
闭包
有哪些应用场景?
闭包
有什么缺点?如何避免
闭包
引起的
内存
泄露?
闭包
会使得函数
中
的
变量
都被长久
保存
在
内存
中
,增加
内存
使用量。作用一个是可以直接访问函数内部的私有
变量
,并且形成私有空间,不受外界干扰(保护),另一个就是让这些
变量
的值始终保持在
内存
中
(
保存
)比如使用...
什么是
闭包
?
闭包
的作用?
闭包
会导致
内存
泄漏吗?
闭包
的另一个用途是使已经运行结束的函数上下文
中
的
变量
对象继续留在
内存
中
,因为
闭包
函数保留了这个
变量
对象的引用,所以这个
变量
对象不会被回收。由于
闭包
会携带包含它的函数的作用域,因此会占用更多的
内存
,过度...
在
JavaScript
中
闭包
为什么会导致
内存
泄漏?如何避免?
闭包
,这个
JavaScript
中
的“双刃剑”,既是我们实现模块化、封装私有
变量
的利器,又可能在不经意间埋下
内存
泄漏的“定时炸弹”。就像一把锋利的刀,用得好能高效完成工作,用不好就会伤到自己。今天这篇文章,就来当...
JavaScript
87,993
社区成员
224,694
社区内容
发帖
与我相关
我的任务
JavaScript
Web 开发 JavaScript
复制链接
扫一扫
分享
社区描述
Web 开发 JavaScript
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章