引用传递和值传递的理解有问题吗?

引用传递和值传递的理解有问题吗?

引用传递是将一段内存单元的地址赋给另一个变量,所以并没有新开辟一段内存空间,两个变量指向的是同一个内存单元;值传递需要将一个内存单元的值复制给另一个内存单元,所以改变其中一个内存单元的内容不会影响到另一个内存单元内容。

var person=new Object();

function setName(obj){

obj.name="xiaoming";

obj=new Object();

obj.name="xiaohua";}

setName(person);

这段代码是这样理解的吗?变量person中存着指向对象的地址,调用setName函数是将person中的数据复制给了一个临时变量obj,使得obj能够访问到同一个对象,所以修改obj.name就相当于修改了person.name,后来obj里的地址指向了另一个内存单元,并重新设置该内存单元对象属性,但是person中的数据并没有改变,还是指向原来的内存单元,所以这是值传递。

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
好帮手慕言 2019-08-23 20:13:14

同学你好,同学理解的是正确的,棒棒哒,

如果帮助到了你,欢迎采纳~祝学习愉快~

好帮手慕言 2019-08-23 09:56:03

同学你好,可以传递基本类型(比如Number,基本类型传递的是值),也可以传递引用类型。

传值的例子:

http://img1.sycdn.imooc.com//climg/5d5f46770001cc3404530218.jpg

效果:

http://img1.sycdn.imooc.com//climg/5d5f46850001202d04200149.jpg

传递引用类型的例子:

http://img1.sycdn.imooc.com//climg/5d5f46e40001c47f05340306.jpg

效果:

http://img1.sycdn.imooc.com//climg/5d5f46ef00010eec02810147.jpg

同学可以根据自己的需求来判断使用哪种。效果都是一样的。

如果没能解决你的疑问,可以创建一个新的问题继续提问。

如果帮助到了你,欢迎采纳~祝学习愉快~

  • 提问者 PHXL #1
    我是想说实参和形参之间的参数传递都是按值传递来着,不是想说实参的类型是基本类型还是引用类型
    2019-08-23 11:04:22
好帮手慕言 2019-08-22 18:24:25

同学你好,前面理解的都是正确的。最后一句值传递同学是想说obj与person之间的关系吗?如果是的话obj与person之间是引用传递,给obj添加了一个name属性,值为xiaoming,person.name也就添加了一个name属性,值为xiaoming。随后obj又指向了另一个地址,在新地址里添加了一个name属性,值为xiaohua。obj与person之间是引用传递,所以obj改变地址之后和person就没有关系了。

同学可以再理解一下。

如果帮助到了你,欢迎采纳~祝学习愉快~

  • 提问者 PHXL #1
    js里的参数传递不都是按值传递的吗?
    2019-08-22 19:56:05
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
组件化思想开发电商网页 18版
  • 参与学习           人
  • 提交作业       467    份
  • 解答问题       4826    个

本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师