首页 > Web开发 > 详细

js中关于赋值和内存的问题

时间:2019-04-09 23:41:01      阅读:198      评论:0      收藏:0      [点我收藏+]

一、var a=xxx,a内存中到底保存的是什么?

  1.xxx是数据,保存的就是这个数据。

  2.xxx是对象,保存的就是这个对象的地址值。

  3.xxx是个变量,保存的就是xxx的内容,可能是数据,也可能是地址值。

二、关于引用变量赋值问题。

  1.两(n)个引用变量指向同一对象,通过其中一个引用变量修改对象内部数据,其他引用变量看到的是修改之后的数据。

技术分享图片

1 var obj1={name:‘yao‘};
2 var obj2=obj1;
3 obj2.name=‘li‘;
4 console.log(obj1.age);//‘li‘

  2.两(n)个引用变量指向同一对象,让其中一个引用变量指向另一个对象,其他引用变量还是指向之前的对象。

技术分享图片

1 var obj1={name:‘yao‘};
2 var obj2=obj1;
3 obj1={name:‘li‘};
4 console.log(obj2.name);//‘yao‘

三、js调用函数传递变量参数时,是值传递还是引用传递?

  所有函数的参数都是按值传递的!!

  但是访问变量有按值和按引用两种方式!!

1 function setName(obj) {
2     obj.name=‘yao‘;
3 }
4 var person=new Object();
5 setName(person);
6 console.log(person.name);//‘yao‘
1 function setName(obj) {
2     obj.name=‘yao‘;
3     obj=new Object();
4     obj.name=‘li‘;
5 }
6 var person=new Object();
7 setName(person);
8 console.log(person.name);//‘yao‘

  如果person是按引用传递的,那么person会自动被修改为指向其name属性值为‘li‘的新对象。但是当访问person.name时,显示值仍为‘yao’。这说明即使在函数内部修改了参数的值,但原始的引用仍然保持未变。实际上,当在函数内部重写obj时,这个变量引用就是一个局部对象了。而这个局部对象会在函数执行完毕后立即被销毁。

 

js中关于赋值和内存的问题

原文:https://www.cnblogs.com/yaomeijuan/p/10680555.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!