JavaScript基元和堆栈

问题描述 投票:0回答:1

我试图了解基元的值如何在堆栈中改变。假设我声明并初始化了四个基元。

let myNumber = 12;
let myBool = true;
let myString = "hello";
let myNull = null;

我知道,它们会像这样存储在堆栈中。

那么,如果我这样做。

myNumber = 30;

问题: javascript引擎会不会从堆栈中弹出myNull, myString, myBool(并将它们存储在内存中的其他地方), 然后将myNumber的值改为30 然后将myBool, myString, myNull推回堆栈?

javascript stack callstack primitive
1个回答
0
投票

对基元变量的赋值是日常的基础任务。这里需要理解的关键点是,当我们在给一个变量赋值时,实际上我们是从堆中给变量分配地址,因为我们知道在js中,基元变量是不可变的,因此如果值发生变化,那么那里所指的地址也会发生变化.如果我们按照这个概念去做,比在我们的调用栈中,我们实际上是在存储堆内存位置的地址,而不是实际的值。你可以参考下面的媒介链接来更好的理解同样的内容.希望对你有所帮助。:)

https:/medium.com@ethannamjavascripts-memory-model-7c972cd2c239。

(注:也请大家从js官方文档中去了解一下垃圾收集器的概念,以便对基元变量赋值和垃圾收集有进一步的深入理解:) )

© www.soinside.com 2019 - 2024. All rights reserved.