请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

闭包的问题

这段代码里origin的作用?https://img1.sycdn.imooc.com//szimg/5aa0cd810001f5aa03640370.jpg  这里origin的全局变量与pos这个环境变量没有冲突吗?他们能直接传参?f(2)里的step是怎么传进去的?能否把这个完全导开一下吗?就是不同F()这个传参

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

2回答

7七月 2018-03-08 14:36:15

origin和pos有什么 冲突,连名字都不一样呀。

0 回复 有任何疑惑可以回复我~
  • 提问者 hihiluo #1
    但是一个是全局变量 传参  然后再在包里变成POS这个环境变量  我这有理解有问题吗?  这样传会有问题吗?
    回复 有任何疑惑可以回复我~ 2018-03-08 15:18:53
  • 7七月 回复 提问者 hihiluo #2
    没有问题的,建议再把这几节再看看,闭包确实是属于高级概念,不太容易理解。
    回复 有任何疑惑可以回复我~ 2018-03-08 15:35:00
八云君 2018-03-08 14:09:07

我的理解是,origin只是赋值给pos,即让pos=0,所以没有冲突,pos作为factory函数的参数,也是其factory本身的变量,f(2)的变量是传step=2,然后new_pos=0+2,由于nonlocal pos,所以pos不是go函数里面的变量而是factory的变量,所以pos=new_pos=2,其go函数的环境变量得到改变而被保存下来为下一次调用所用

0 回复 有任何疑惑可以回复我~
  • 提问者 hihiluo #1
    那我直接写f=factory(0)能行吗? 
    回复 有任何疑惑可以回复我~ 2018-03-08 15:17:12
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信