【问题标题】:What is the different between stack and call stack in Javascript?Javascript中的堆栈和调用堆栈有什么区别?
【发布时间】:2020-10-24 18:28:21
【问题描述】:

我现在正在学习 javascript 的基础知识。在我观看和阅读的视频和文章中,我对堆栈和调用堆栈之间的区别感到困惑。

这是我从视频中看到的堆栈,上面说堆栈是放置原始值和指针的地方。

在另一篇文章中,我还得到了术语调用堆栈,它是一种数据结构,用于存储有关计算机程序的活动子例程的信息

这些术语是相同的还是有细微的差别?还是理解它们是我的错误?谢谢

【问题讨论】:

  • 我不建议学习像这样的内部机制作为学习 JavaScript 的第一步,它们已经足够抽象,你通常不必担心它们。
  • 同意@appleapple。在学习基本的代码编写和弄清楚如何让你的应用程序做你需要的事情时,涉及到足够多的信息过载。你很容易发现自己浪费了很多时间,只是为了比刚开始时更加困惑,因为你意识到自己对基础知识的了解不足以吸收高级主题。您会遇到很多事情,您只需将其存储在“我知道它存在”抽屉中,并根据需要返回给他们
  • 在使用递归时记住正确的基本情况,这样堆栈就不会溢出

标签: javascript stack heap-memory callstack


【解决方案1】:

Stack & Heap 意义上的堆栈是程序存储方法的变量值或引用的位置(引用值存储在堆中)。为澄清起见,我将其称为方法的State

但一个正在运行的应用程序通常只有一个活动的Stack。因此,当您调用另一个方法(或像您的示例一样递归调用自身)时,我们需要保存当前的State 并创建新空间来存储新调用的方法的State,以便我们可以在之后恢复以前的方法的State。 我们使用名为Stack 的数据结构来实现这一点,该结构支持后进先出 (LIFO) 来跟踪调用的方法State。我们称之为Call Stack

【讨论】:

    猜你喜欢
    • 2021-05-10
    • 2011-11-20
    • 1970-01-01
    • 2016-01-19
    • 2016-08-18
    • 2015-01-15
    • 2014-07-13
    • 2021-08-29
    • 2012-02-17
    相关资源
    最近更新 更多