Js中数据类型和堆栈

JavaScript中值类型分为两种:

不可改变的原始值(栈数据) Number,String,Boolean,undefined,null
引用值(堆数据) array,object,function首先,讨论两个问题:
var num1 = 100;
var num2 = num1;
num2 = 200;
问题:这个时候num1 = ?

var arr1 = [1,2];
var arr2 = arr1;
arr1.push(3);
问题:这个时候arr2 = ?
答案分别为:100;[1,2,3]
这个问题,我们首先需要了解数据在栈堆中怎么储存。
第一个问题:在这里插入图片描述num1 = 100 ,就是定义了一个房间号为 num1,把100放入房间中,然后num2 = num1,就是把num1的值copy了一份放在num2中,num2为100,这个时候,num2 = 200,根本上是重新定义了一个num2 = 200,(我们前面也说过 这是不可改变的原始值),所以num1还是为100;
再说第二个问题:
在这里插入图片描述
首先定义了一个arr1,这时我们首先在栈上定义这个名字,然后发现这是一个复杂数据类型,然后把数据储存在堆中,栈中的内容是 指向堆中 (如图),然后复制了一份内容放在arr2中,这个时候用push方法就是改变堆中的数据[1,2,3],所以说,arr2也改变了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值