请问如何理解函数闭包,模仿

mefisto · 2018-02-10 16:34:45 · 1332 次点击

"闭包"的定义就是:能够读取<其他函数内部>变量的[函数]。只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数“。 相对于传统函数

  • 闭包包含自由(未绑定到特定对象)变量,这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量)。
  • 它通过其他函数获取,不同情况下,很可能返回值(或副作用)不同
#4
更多评论

闭包在 JavaScript 中就是函数加上了词法作用域,在这个例子中,是把

func() int{ cur,next=next,cur+next return cur }

和 cur next 结合在一起,作为

 f := fibonacci()

的返回值,也就是 f 本身是带着 cur next 这两个变量的。 这样,你循环多次调用的时候, cur next 就不停地更改增加了。

#1

c,c++ 里面的静态变量是保存在数据段的,常驻内存,go 里面的闭包会使用堆来保存变量

#2