闭包

简单来说,我理解的闭包就是 

   外层方法可以访问到内层方法的变量,然后内层元素就利用“闭包”这一特性去访问,改变外层变量 。

有一个fnncatTest方法,里面嵌套一个b()方法 ,

 b()在fnncatTest()里,有权限拿到fnncatTest中的i变量 。

 执行++i, 在fnncatTest函数中的i值变为1;

 接下来我想要从外部拿到循环增加的i值 ,于是我写成了这样 :

拜托,当然不可以了,i可是fnncatTest的局部变量 ,怎么可能拿到呢,

于是我想,如果把i值给到一个函数上,我通过一个函数去访问i,

这么写了:

c()没有。对啊 ,因为fnncatTest没有返回值呀,于是我机智的在fnncatTest()加上了

return b;

这样,我的fnncatTest()有了返回值,把b()返回到了fnncatTest()中,

fnncatTest便可以去访问b()中的i了

i便可以呆在内存中,就变成了下面的样子了 。

  

没写完,打个标记回来接着写。

原文地址:https://www.cnblogs.com/fnncat/p/6559636.html