Javascript原始值与引用值的区别

原始值与引用值

在Javascript中,变量有两种类型,分别为原始值引用值

原始值就是基本的数据类型。例如:Number String Boolean Undefined Null

引用值可以解释为引用对象的类型。例如:Array Object Function Data RegExp等等

二者的赋值情况

原始值是将数据存储在里面,以“值”本身的方式进行赋值。

就以下举例,开辟一个空间命名为a,赋值为10,再开辟一个空间命名为b,将a中的值拷贝进b中,最后将20覆盖a中原本的10,最后在控制台输出b的值,b仍为10。

var a = 10;
var b = a;
a = 20;
console.log(b);

引用值是将数据存储在里面,以“引用”的方式进行赋值。

就以下举例,现在栈里面开辟一个空间命名为arr1,接着在堆里面放入[1,2],栈里面arr1的空间则存放数据在堆里面的地址,再在栈里面开辟一个空间命名为arr2,将arr1数据在堆里面的地址给拷贝过来,现在往arr1中push一个3,输出的arr2仍然是[1,2,3]。

var arr1 = [1,2];
var arr2 = arr1;
arr1.push(3);
console.log(arr2);

举例

var arr1 = [1,2];
var arr2 = arr1;
arr1 = [1,2,3];
console.log(arr1);
console.log(arr2);

最后输出结果arr1为[1,2,3],arr2为[1,2]。

因为第三行使用的是原始值,重新在堆里面开辟一个空间存放[1,2,3],栈里面arr1存放堆的地址也随之改变,但栈里面arr2存放的仍然是以前[1,2]的地址。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值