关于传递参数

关于传递参数

不管是基本类型还是引用类型,参数传递都是按值传递,基本类型传递的是值,应用类型传递的是地址(相当于值)

  1. 这句话麻烦解释一下

    function setName(obj) {

      obj.name = 'xm';

    var   obj = {};

      obj.name = 'xh';

        }

    2.如此书写,是不是console.log(person.name);结果是xh?是不是可以理解为赋值才会改变引用的地址,但是添加内容不会改变地址?还是说有别的道理需要我去理解?

正在回答

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

2回答

同学你好,关于同学的问题解答如下:

1、a++是先返回a的原值,再返回递增之后的值,我们可以再打印一次看一下:

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

先返回a,打印结果为1,再进行自增1:

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

2、这样写不是xh,而是xm。我们可以打印出来看一下:

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

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

这是因为在函数setName里面,又重新声明了一个变量obj,这个obj已经不是传进来的参数person了,是新开辟的空间,所以不会改变对象person的name值:

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

可以稍微修改一下:

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

与上面是等效的。

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

好帮手慕粉 2019-12-23 14:53:54

同学你好,关于同学的问题解答如下:

1、举个例子看一下:

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

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

这些是操作系统原理性的内容了,同学不用深究,只要会使用即可。

2、同学的第二个问题里面,person.name是什么意思呢?建议同学在对应的课程里面进行提问,或者将问题描述清楚。

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

  • 提问者 迷失的小麦 #1
    var person = {}; setName(person);
    2019-12-23 15:08:53
  • 提问者 迷失的小麦 #2
    为什么老师举的例子a是1而不是2,我知道a++是先返回a的原值,再返回递增之后的值,但是具体到本案例就想不通了
    2019-12-23 15:15:35
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

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

在线咨询

领取优惠

免费试听

领取大纲

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