gpt4 book ai didi

javascript - 理解javascript中的栈和帧

转载 作者:行者123 更新时间:2023-12-02 16:58:45 24 4
gpt4 key购买 nike

我是 js 的新手,无法理解后台发生的事情。

那么如果我有一个递归js函数,所有的递归调用都会在堆栈上创建一个堆栈帧吗?然后我们一回来就被赶走?这个过程涉及到堆吗?

接下来是闭包的想法。有了这个,我很困惑第一个函数被放在堆上的地方?

任何解释将不胜感激。

最佳答案

So if I have a recursive js function, do all the recursive calls create a stack frame on the stack?

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

and then get popped off once we return?

是的。目前通用引擎中没有实现尾部调用消除,并且规范(还)没有要求它。

Is the heap involved in this process?

有可能。或者可能不是。规范根本不区分栈和堆,无论如何你也无法通过语言来控制它。

I am very confused with where things go. Does the first function get put on the heap?

有可能。如上所述,事情的发展方向是引擎的选择;但您可以预期它会做出明智的决定。

函数是 JavaScript 中的一流对象,我希望将它们放入堆中(请注意,在递归调用中通常只有一个函数,无论如何,它们不被重复)。堆栈上的堆栈帧中的变量仅包含原始值和指向对象的指针。

关于javascript - 理解javascript中的栈和帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25950026/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com