首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >理解javascript中的堆栈和帧

理解javascript中的堆栈和帧
EN

Stack Overflow用户
提问于 2014-09-20 14:55:12
回答 1查看 174关注 0票数 0

我对js非常陌生,很难理解在后台发生了什么。

因此,如果我有一个递归js函数,是否所有递归调用都在堆栈上创建堆栈框架?然后等我们回来就被干掉了?堆是否涉及此过程?

接下来是闭包的想法。对于这一点,我对事情的发展感到非常困惑,第一个函数会被放到堆里吗?

任何解释都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-20 15:32:27

因此,如果我有一个递归js函数,是否所有递归调用都在堆栈上创建堆栈框架?

是。每个函数调用都会创建一个新的堆栈框架。

然后等我们回来就被干掉了?

是。目前还没有在通用引擎中实现尾叫消除,而且规范还没有要求它。

堆是否涉及此过程?

有可能。也可能不是。规范根本没有区分堆栈和堆,而且您也无法通过语言来控制它。

我对事情的发展感到非常困惑。第一个函数是否被放入堆中?

有可能。如前所述,这是引擎的选择,但你可以期待它做出明智的决定。

函数是JavaScript中的第一类对象,我希望将它们放入堆中(注意,在递归调用中,通常只有一个函数,它们不会被复制)。堆栈上堆栈帧中的变量将只包含指向对象的基本值和指针。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25950026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档