码迷,mamicode.com
首页 > 其他好文 > 详细

关于闭包即双层装饰器的理解

时间:2018-09-02 23:59:28      阅读:300      评论:0      收藏:0      [点我收藏+]

标签:闭包函数   作用   vpd   局部变量   本地   关于   信息   结束   多层   

** 闭包**:就是一个概念,出现在嵌套函数中,指的是内层函数引用到了外层函数的**自由变量**(未在本地作用域中定义的局部变量),就形成了闭包。 函数的局部作用域是不能够保存信息的,即在函数内部声明变量在函数调用结束之后函数里面保存的信息就被销毁了,包括函数的参数。而这时使用闭包的话就能发挥作用: **保存函数的状态信息,使函数的局部变量信息依然可以保存下来**。形成闭包之后,闭包变量能够随着闭包函数的调用而实时更新,就好像是一个全局变量那样。

技术分享图片

我们发现每次再运行该函数,里面的count变量其实已然保存。如果你希望函数的每次执行结果,都是基于这个函数上次的运行结果。
通过以上简单的代码就很明了了闭包的好处之一。
另一个好处:闭包可以根据外部作用域的局部变量来得到不同的结果,这有点像一种类似配置功能的作用,我们可以修改外部的变量,闭包根据这个变量展现出不同的功能。这点在装饰器中得到大量运用。

**多层装饰器**的运行套用都是从下套上,一层套一层,具体看一下代码就明晓。

技术分享图片

两层装饰器能很好的完成注册,方便构成架子写进不同函数:
技术分享图片

关于闭包即双层装饰器的理解

标签:闭包函数   作用   vpd   局部变量   本地   关于   信息   结束   多层   

原文地址:http://blog.51cto.com/13929187/2169162

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!