JavaScript中变量地址指向的问题

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

JavaScript中变量地址指向的问题

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

###基础变量
如N1=300,N2=200,N3=100,存储格式为
JavaScript中变量地址指向的问题_第1张图片
###复杂变量,引用类型


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

如上,存储格式应该为
JavaScript中变量地址指向的问题_第2张图片
###当地址指向发生改变


```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的指向是没有改变的,所以输出为美丽传说,而不是阿甘正传。

你可能感兴趣的:(js学习)