考试第8题

考试第8题

http://img1.sycdn.imooc.com//climg/59f5746b0001214b06930542.jpg

这道题,fn函数中传入了一个fn,在函数内部,应该是传入的那个fn为函数fn中的局部变量吧。

我的理解是,在函数内部调用的时候。首先是找局部变量fn,如果没有再找全局的fn,

调用fn(add)时,函数里的fn找到的应该就是add这个函数吧。

这样下来,顺序应该是:

1、把add的person属性值设置为xm

2、把add指向的函数改为空函数

3、把add的person属性值设置为xh

为什么打印出来的add.person却是xm呢?

正在回答

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

1回答

http://img1.sycdn.imooc.com//climg/59f597c50001f62806420140.jpg

第一句:fn.person = 'xm'; 等价于全局函数add多了一个person的属性,值为''xm。(此时全局函数add的person属性为'xm')。

第二句:fn = function () {}; 把fn的指向改变,此时,fn和add都指向一个新的函数。但这里的改变,只在全局函数fn内部生效。fn和add指向为fn内部的匿名函数。(此时全局函数add的person属性为'xm',全局函数fn内部的匿名函数没有person属性)。

第三句:fn.person = 'xh'; 这里,给fn内部的匿名函数增加一个person的属性,值为'xh'。(此时全局函数add的person属性为'xm',全局函数fn内部的匿名函数的person属性为'xh')。

最后,document.write()的时候,打印出来的是全局函数add()的person属性,而不是全局函数fn()内部匿名函数的person属性。所以add.person = 'xm'。

  • 疯狂机械人偶 提问者 #1
    明白了。fn指针变了。改变和add没关系了。
    2017-10-29 17:40:04
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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