进阶测试的问题

进阶测试的问题

http://img1.sycdn.imooc.com//climg/5a30482100015c0904410342.jpg希望老师解释一下 为什么最后输出结果是xm 而不是xh,?

正在回答

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

2回答

把函数add的地址复制给了函数fn的参数fn,函数的参数指向发生变化了变化,但是不影响add

 fn=function(){};
 fn.person="xh";

上面这两个代码就跟add没有关系了

可以在每行代码后面去打印一下参数fn,看看发生了什么

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

小丸子爱吃菜 2017-12-13 10:01:05

参数传递的本质是值的复制,由于函数add是引用类型,这里就相当于把函数add的地址复制给了函数fn的参数fn,所以函数fn的参数fn也指向函数add,对fn的操作其实就是对函数add的操作,结果xm。

祝学习愉快!

  • 提问者 慕工程5426462 #1
    那他下面不是还有fn.person='xh'吗?这里怎么理解
    2017-12-13 15:37:47
  • felufan 回复 提问者 慕工程5426462 #2
    fn = function () {};改变了函数fn的参数fn的指向,不再指向函数add,之后对参数fn的操作不再影响函数add,所以助教说fn=function(){}; fn.person="xh";这两个代码跟add没有关系
    2017-12-14 10:16:26
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
HTML5与CSS3实现动态网页 2018
  • 参与学习       1887    人
  • 提交作业       4643    份
  • 解答问题       5760    个

有HTML和CSS基础,却不知道如何进阶?本路径带你通过系统学习,完成从“会做网页”到“做出好的动态网页”的蜕变,迈出成为前端工程师的第一步。

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

在线咨询

领取优惠

免费试听

领取大纲

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