【发布时间】:2020-05-17 22:23:08
【问题描述】:
我试图了解原始值在堆栈中是如何变化的。 假设我声明并初始化了四个原语:
let myNumber = 12;
let myBool = true;
let myString = "hello";
let myNull = null;
据我所知,它们将像这样存储在堆栈中: stack
那么,如果我这样做:
myNumber = 30;
问题: javascript 引擎是否会从堆栈中弹出 myNull、myString、myBool(并将它们存储在内存中的其他位置),然后将 myNumber 的值更改为 30,然后将 myBool、myString 和 myNull 推回堆栈中?
【问题讨论】:
-
iirc 调用堆栈用于 js 解释器,以帮助在调用子例程时保持其在脚本中的位置。变量声明不是子例程,因此在您的示例中我根本看不到调用堆栈。 developer.mozilla.org/en-US/docs/Glossary/Call_stack
-
“调用栈”通常是指函数调用。请参阅:Understanding the JavaScript call stack。你在这里指的是什么?
-
youtu.be/9ooYYRLdg_g?t=504 这就是我所指的。该视频解释了原语如何被“推送”到称为“堆栈”的内存部分中。但是,它并没有解释当我们改变原语的值时会发生什么。
标签: javascript stack callstack primitive