JS基本类型和引用类型的区别

当我们打开一个页面时,系统会为其分配一定的内存空间,这里面就包括了JS的内存区,JS内存区又分为代码区和数据区,顾名思义就是存代码和数据的区域,例如写入 var a = 1,那么a就存在了代码区,数字1就存在了数据区

在数据区中,包括栈内存(Stack)堆内存(Heap)

基本类型的数据就存在栈内存中,它们可以直接访问,是按照值进行分配的,可以直接操作栈内存空间的值

vara=1b=aconsole.log(a)// 1console.log(b)// 1b=2// 改变b的值对a没有影响console.log(a)// 1console.log(b)// 2

除过上面的 6 种基本数据类型外,剩下的就是引用类型了,统称为 Object 类型

引用类型的值是按引用访问的,它的值保存在堆内存中,栈内存中保存的是它的地址,该地址与堆内存中的值相关联

vara={name:"percy"};varb;b=a;a.name="zyj";console.log(b.name);// zyjb.age=22;console.log(a.age);// 22varc={name:"zyj",age:22}

图解如下:

image.png

总结:

栈内存堆内存

存储基础数据类型存储引用数据类型

按值访问按引用访问

存储的值大小固定存储的值大小不定,可动态调整

由系统自动分配内存空间由程序员通过代码进行分配

主要用来执行程序主要用来存放对象

空间小,运行效率高空间大,但是运行效率相对较低

先进后出,后进先出无序存储,可根据引用直接获取

作者:季靖松

链接:https://www.jianshu.com/p/38bd1c7dfd88

来源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容