标签:存储 变量 04 复杂 复据 数据类型 module2 类型 赋值
简单类型和复杂类型
一、简单类型和复杂类型的区别
-
基本类型又叫值类型,复杂类型又叫引用类型
-
值类型:简单数据类型,基本数据类型,在存储时,变量中存储的是值本身,因此叫做值类型
-
引用类型:复杂数据类型,在存储时,变量中存储的仅仅是地址(引用)
堆和栈
-
JS中没有堆和栈的概念,但是可以用这个来讲解
-
简单的数据就会存储到栈(复杂类型的引用也会在这里)
-
复杂类型的数据就会存储到堆(需要人工销毁,现在js有自己的垃圾清除机制)
-
栈(操作系统):有操作系统自动分配释放,存放函数的参数值,局部变量等
-
堆(操作系统):存储复杂类型(对象),一般有程序员分配释放,若程序员不释放,由辣鸡回收机制回收
二、基本类型在内存中的存储
-
变量中存储的是值本身,如果将变量赋值给另一个变量,是将内部的值赋值一份给另外一个变量,两个变量没有联系,其中一个变化,另外一个不会发生变化
-
两个空间是独立开的,当讲number赋值给n,其实是将值赋值过去(前提number存储的是简单变量),其中是没有联系的
三、复杂类型在内存中的存储
-
如果讲复杂类型的数据赋值给一个变量,复杂类型的数据会在内存中创建一个原型,而变量中存储的是指向对象的一个地址。如果讲变量赋值给另外一个变量,相当于将地址复制一份给了新的变量,两个变量的地址相同,指向的是同一个原型,其中一个访问并改变了,另一个变量也会改变
var p1 = { name: 'zs', age: 18 }
p2 = p1
p2.age = 20
p1 // { name: 'zs', age: 20 }
p2 // { name: 'zs', age: 20 }
-
数组也是复杂数据类型,所以数组也有这样的特性
标签:存储,变量,04,复杂,复据,数据类型,module2,类型,赋值 来源: https://www.cnblogs.com/lezaizhu/p/14093742.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。