JavaScript有常量池吗
javascript有常量池
JavaScript内存空间分为: 栈,堆,池,队列。
栈内存:用来存储基本数据类型
常量池:用来存放常量 基本数据类型(一般把它归类到栈内存中)
堆内存:用来存储引用数据类型
当变量存储的基本数据类型时,该变量的值则存储在栈内存中
当变量存储的是引用数据类型时,该变量值则存储的是一个系统分配的内存地址,而真正的引用数据类型则存放在堆内存中,而内存地址指向了在堆内存中的引用数据类型
栈内存
以基本数据类型之一的数值型(Number)为例:
当我们声明一个基本数据类型变量时,会在栈内存中存储变量名和具体值
当我们使用console.log(a) 时,我们输出的是对应的值
扩展:
堆内存
如
let a={1,2,3} let b={m:20}
上图我们可以看到,变量a1为基本数据类型,而变量b,c为引用数类型,b,c在栈中存放的并不是变量的值,而是系统分配的一个内存引用地址,真正的数据存放在堆内容中
当我们声明变量来存储一个引用数据类型时,会在栈内存中生成一个变量名和一个具体值,而这个具体值是系统分配的一个内存引用地址,这个地址指向了存放在堆内存中,我们所创建的引用数据类型。当我们调用该变量时,解析器会根据变量对应的引用地址,引用对应的对象。