JavaScript中变量地址指向的问题

@JavaScript中变量地址指向的问题

JavaScript中变量地址指向的问题

js中,基础变量是存储在栈中,而复杂变量如对象,函数和数组,栈中存储的是复杂变量的地址,数据存储在堆中

###基础变量
如N1=300,N2=200,N3=100,存储格式为
在这里插入图片描述
###复杂变量,引用类型


```javascript
var obj={
name:"西西里",
age:10
}

如上,存储格式应该为
在这里插入图片描述
###当地址指向发生改变


```javascript

```javascript
Person(name,age){
this.name=name;
this.age=age;
}
//构造函数
function change(person){
person.name="美丽传说";
person=new Person(“阿甘正传”,10);//此处开辟了新空间
}
var p=new Person("西西里",20);
console.log(p.name);//此处输出为西西里
change(p);
console.log(p.name);//此处输出为美丽传说

如上,值类型之间传递的是值,而引用类型之间传递的是地址,所以在change函数中,person.name=“美丽传说”,相当于将p的地址复制给了person,修改了name属性值。change函数中,person在最后指向了新的地址空间,不再是p的地址,我们在代码中要求输出的是p.name,p的指向是没有改变的,所以输出为美丽传说,而不是阿甘正传。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值