javascript - 运行期上下文本质是什么?是否是将函数`{`、`}`间变量和函数,以键值对的形式保存在一个临时的对象中?
大家讲道理
大家讲道理 2017-04-11 12:00:41
[JavaScript讨论组]

在学习作用域与作用域链的时候,看到“执行函数时会创建一个称为运行期上下文(execution context)的内部对象”,想了解下这个“运行期上下文”本质上到底是个啥?函数执行结束,“运行期上下文”就销毁了么?函数内变量在函数执行结束后的清理是否与“运行期上下文”有关?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(2)
黄舟

给你一个最通俗的答案 不是很准确但是便于理解
变量对象(Variable object)是说JS的执行上下文中都有个对象用来放这个执行上下文中可被访问但是不能被delete
函数标示符啊形参啊变量声明啊什么的这些玩意会挂在个对象上
对象的属性对应它们的名字对象属性的值对应它们的值但这个对象是规范上或者说是引擎实现上的不可在JS环境中访问到
活动对象(激活对象)(Activation object)有了变量对象存每个上下文儿中的东西但是它啥时候用呢其实就是每进入一个执行上下文儿这个执行上下文儿中的变量对象就被激活了可以用了也就是该上下文中的函数标示符啊形参啊变量声明啊就可以被访问到了

PHPz

运行期上下文就是指当执行一条语句时,哪些对象(所谓的运行环境)能够被使用。比如对于一个函数内部来说,函数的参数、声明的对象、全局变量等。JS是通过作用域链来实现的,所以内层的函数能够访问外层函数的变量,一直到全局变量。函数结束时,运行期上下文我认为就销毁了,除了那些在函数执行结束后仍被引用的对象。内部变量清理,是因为有垃圾回收机制。

推荐阅读《Webkit技术内幕》

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号