JavaScript中变量标识符如何关联对应内存地址?
关于JavaScript标识符与内存地址的关联逻辑
当你声明const num = 10时,JavaScript的执行流程是这样的:
- 当前代码所在的执行上下文会创建一个叫**变量环境(Variable Environment)**的内部结构,它本质就是一组键值对集合。
- 由于
10是基本类型值,JS会直接在栈内存中分配一块空间存储它。 - 最后在变量环境里添加一条映射关系:键是标识符
num,值是存储10的那块栈内存的地址。
当你调用console.log(num)时:
JS会先在当前执行上下文的变量环境里查找num这个键,找到对应的内存地址后,直接去该地址取出值10,再把它传递给console.log完成输出。
简单来说,标识符(比如num)确实会和它对应的内存地址一起被存储——就存在执行上下文的变量环境里,这个环境是JS引擎在代码运行时自动创建和维护的,不需要开发者手动操作。
补充一点:如果是引用类型(比如const obj = {a:1}),栈内存里会存储指向堆内存中对象的地址,变量环境里的obj映射的就是这个栈地址,JS通过它间接找到堆里的对象。
内容的提问来源于stack exchange,提问作者Ahammed Zulaikh
相关产品推荐
相关产品推荐

