JS基础知识 - JS 值类型和引用类型的区别

1、javascript中变量类型分为值类型(基本数据类型)和引用类型
(1) 值类型:String(字符串),Number(数值),Boolean(布尔值),Undefined,Null
(2) 引用类型:Array(数组),Object(对象),Function(函数)

2、值类型和引用类型的区别

(1) 存储位置不一样
① 值类型的变量会保存在栈内存中,如果在一个函数中声明一个值类型的变量,那么这个变量当函数执行结束之后会自动销毁
② 引用类型的变量名会保存在栈内存中,但是变量值会存储在堆内存中,引用类型的变量不会自动销毁,当没有引用变量引用它时,系统的垃圾回收机制会回收它

栈内存堆内存
a = 10,b = 20;
arr[10,20,30,40,50]

(2) 复制方式不一样
① 值类型的变量直接赋值就是深复制,如 var a = 10; var b = a;那么a的值就复制给b了,b修改值不会影响a
② 引用类型的变量直接赋值实际上是传递引用,只是浅复制
在这里插入图片描述输出结果 arr 和 array 都会是 [1,20,30],要想实现深复制,必须在堆内存中再开辟一块空间

(3)值类型无法添加属性和方法,如
在这里插入图片描述结果都会返回 undefined

(4)引用类型可以添加属性和方法
在这里插入图片描述结果person.age=18,person.eat返回一个函数

(5) 值类型的比较是值的比较,只有当它们的值相等的时候它们才相等。比较的时候注意” == ”和” === ”,双等号( == )在做比较的时候做了类型转换,而全等号( === )是值和类型相等是才能相等
在这里插入图片描述结果返回 true,两个相同字符串的比较,是值(‘{}’)的比较,完全相等

(6)引用类型的比较是引用地址的比较
在这里插入图片描述
结果返回 false,两个空对象在堆内存中的地址不一样,所以即使两个一模一样的对象也不一定相等

————————————————
版权声明:本文为CSDN博主「linxiaoduo」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/linxiaoduo/article/details/80117628

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值