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

基本类型和引用类型:
ECMAScript包含两个不同类型的值:基本类型值和引用类型值。基本类型值指的是简单的数据段;引用类型值指由多个值构成的对象。当我们把变量赋值给一个变量时,解析器首先要做的就是确认这个值是基本类型值还是引用类型值。
基本数据类型

  • 常见的基本数据类型
    Number、String 、Boolean、Null和Undefined。这五种基本数据类型是按值访问的,可以直接操作保存在变量中的实际值
var a = 10;
var b = a;
b = 20;
console.log(a); // 10

b获取的是a值得一份拷贝,虽然,两个变量的值相等,但是两个变量保存了两个不同的基本数据类型值。
b只是保存了a复制的一个副本。所以,b的改变,对a没有影响。

  • 引用类型数据
    对象类型Object type,比如:Object 、Array 、Function 、Data等。
    javascript引用数据类型是保存在堆内存中的对象,与其它语言不同的是,你不可以直接访问堆内存空间中的位置和操作堆内存空间。只能通过操作对象的在栈内存中的引用地址。所以引用类型的数据,在栈内存中保存的实际上是对象在堆内存中的引用地址。通过这个引用地址可以快速查找到保存在堆内存中的对象。
var aa = {name:'张三'};
var bb = aa;
bb.name = '李四';
console.log(aa); // {name: "李四"}

这两个引用数据类型指向了同一个堆内存对象,aa赋值给bb,实际上这个堆内存对象在栈内存的引用地址复制了一份给了bb;但是实际上他们共同指向了同一个堆内存对象。实际上改变的是堆内存对象。
给aa添加name属性,实际上是给堆内存中的对象添加了name属性,aa赋值给bb,bb改变了name值,因为bb和aa指向的是同一个堆内存对象,所以bb的改变会引起aa的改变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值