从品牌网站建设到网络营销策划,从策略到执行的一站式服务
这篇文章主要讲解了“JS引用数据类型的区别有什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JS引用数据类型的区别有什么”吧!
创新互联-成都网站建设公司,专注成都网站制作、成都做网站、网站营销推广,域名注册,网页空间,网站改版维护有关企业网站制作方案、改版、费用等问题,请联系创新互联。stack为自动分配的内存空间,它由系统自动释放;而heap则是动态分配的内存,大小也不一定会自动释放
JS分两种数据类型:
基本数据类型:Number、String、Boolean、Null、Undefined、Symbol,这些类型可以直接操作保存在变量中的实际值。
引用数据类型:Object
基本数据类型是指存放在栈中的简单数据段,数据大小确定,内存空间大小可以分配,它们是直接按值存放的,所以可以直接按值访问
vara=10;
varb=a;
b=20;
console.log;//10值
console.log;//20值
引用类型是存放在堆内存中的对象,变量其实是保存的在栈内存中的一个指针,这个指针指向堆内存。
引用类型数据在栈内存中保存的实际上是对象在堆内存中的引用地址。通过这个引用地址可以快速查找到保存中堆内存中的对象
varobj1=newObject();varobj2=obj1;obj2.name="我有名字了";console.log;//我有名字了
说明这两个引用数据类型指向了同一个堆内存对象。obj1赋值给obj2,实际上这个堆内存对象在栈内存的引用地址复制了一份给了obj2,但是实际上他们共同指向了同一个堆内存对象,所以修改obj2其实就是修改那个对象,所以通过obj1访问也能访问的到。
vara=;
varb=a;//传址,对象中传给变量的数据是引用类型的,会存储在堆中;
varc=a;//传值,把对象中的属性/数组中的数组项赋值给变量,这时变量C是基本数据类型,存储在栈内存中;改变栈中的数据不会影响堆中的数据
alert;//1,2,3,4,5
alert;//1
//改变数值
b=6;
c=7;
alert;//6
alert;//1
从上面我们可以得知,当我改变b中的数据时,a中数据也发生了变化;但是当我改变c的数据值时,a却没有发生改变。
这就是传值与传址的区别。因为a是数组,属于引用类型,所以它赋予给b的时候传的是栈中的地址,而不是堆内存中的对象。而c仅仅是从a堆内存中获取的一个数据值,并保存在栈中。所以b修改的时候,会根据地址回到a堆中修改,c则直接在栈中修改,并且不能指向a堆内存中。
感谢各位的阅读,以上就是“JS引用数据类型的区别有什么”的内容了,经过本文的学习后,相信大家对JS引用数据类型的区别有什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联网站建设公司,,小编将为大家推送更多相关知识点的文章,欢迎关注!
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图