js堆和栈的区别和联系(前端堆和栈知识详解)
前端js堆和栈的区别和联系是怎么样的?js变量都存放在内存中,而内存给变量开辟了两块区域,分别为栈区域和堆区域栈像个容器,容量小速度快。堆像个房间,容量较大。堆内存使用灵活,可以动态增加或删除空间,但是存取比较慢。
1、 js堆和栈分配空间的区别
栈会自动分配内存空间,会自动释放。堆动态分配的内存,大小不定也不会自动释放。
2、 基本类型和引用类型
1)基本类型:简单的数据段,存放在栈内存中,占据固定大小的空间。
2)引用类型:指那些可能由多个值构成的对象,保存在堆内存中,包含引用类型的变量实际上保存的不是变量本身,二十指向该对象的指针。
基本数据类型包括Undefined,String,Boolean,Null,Number
3、传值和传址
1)从一个向另一个变量复制引用类型的值,复制的其实是指针,因此两个变量最终指向同一个对象。即复制的是栈中的地址而不是堆中的对象。
2)从一个变量复向另一个变量复制基本类型的值,会创建这个值的副本。
4、js堆和栈的使用区别
1)栈内存存取速度快,但使用不灵活,同时由于结构简单,在变量使用完成后就可以将其释放,内存回收容易实现;
2)堆内存使用灵活,可以动态增加或删除空间,但是存取比较慢。
除注明外的文章,均为来源:老汤博客,转载请保留本文地址!
原文地址:https://tangjiusheng.cn/js/365.html
原文地址:https://tangjiusheng.cn/js/365.html