理解JavaScript内存空间
堆与栈
栈
可以这样通俗的解释堆的概念,把存储空间 栈 比作一个乒乓球桶,遵循先进后出。函数的执行上下文也是存储在栈中的。
堆
堆则可以与书架作类比,我们在从书架取书时不需要按次序将每本书一次取出来,我们只需要知道书名字,就可以直接从书架中将书取出。堆的概念就是如此。
变量对象与基础数据类型
JavaScript在创建执行上下文时,会创建一个叫变量对象的特殊对象,JavaScript的基础数据类型都会存储在变量对象中,也可以说是存放在栈中。基础数据类型包括Number,String,Boolean,Null和Undefined。基础数据类型都是按值访问的。
堆内存与引用数据类型
与其它语言不同,JavaScript的引用数据类型,比如数组,他们的值的大小是不固定的。引用数据类型的值是存储在堆内存中的对象,而JavaScript不允许直接访问堆内存中的对象。因此,实际上我们在操作中,引用数据类型的值不是真正的存放在堆内存中的对象,而是对象的引用。可以理解为是一个堆内存中对象对应的地址。

浙公网安备 33010602011771号