数据类型区别和堆栈内存处理
2020-10-28 本文已影响0人
琳_1fe8
浏览器能够运行 JS 代码:它会在计算机的内存中分配出一块内存,用来供代码执行的=>栈内存 Stack ECStack(执行环境栈)。
为了区分是哪个区域(全局或函数等)的代码执行,会产生一个“执行上下文”EC=>EC(G) Execution Context(global) 全局执行上下文。
VO(G) 全局变量对象:Variable Object 存储当前上下文声明的变量。
创建基本类型的步骤是:
var[变量]=[值]:
第一步:先创建值
基本类型值直接存储在内存中
引用类型值,都是开辟一个单独的内存空间(堆聂村Heap),用来存储信息的
第二步:声明变量 declare
存放到当前上下文的变量对象中(VO/AO)
第三步:让变量和值关联到一起,也就是我们说的赋值操作,此操作叫做定义 defined
var n:默认值 undefined
创建引用类型值的步骤是:
在计算机内存中分配一个单独的内存出来=>堆内存(HEAP)
有一个16进制的地址
把对象中的键值分别存放到堆内存中
把堆内存的地址放置到栈中,供变量调用
接下来通过几个例子来看下具体的底层逻辑:


