闭包 概念

Posted latiaoyuebu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了闭包 概念相关的知识,希望对你有一定的参考价值。

闭包就是能够读取其他函数内部变量的函数。例如在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数“。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。

 

作用:

1、保护函数内的变量安全

2、在内存中维持一个变量。

模拟私有变量:
function Counter(start){
var count = start;
  return{
  increment:function(){
  count++;
  },
  get:function(){
  return count;
  }
  }
  }
  var foo =Counter(4);
  foo.increment();
  foo.get();// 5
这里,Counter 函数返回两个闭包,函数 increment 和函数 get。 这两个函数都维持着对外部作用域 Counter 的引用,因此总可以访问此作用域内定义的变量count。
objective c的闭包(block)
objective c 中的的闭包,是通过block实现的。Apple在C,Objective-C和C++中扩充了Block这种文法的,并且在GCC4.2中进行了支持。你可以把它理解为函数指针,匿名函数,闭包,lambda表达式,这里暂且用块对象来表述,因为它们之间还是有些许不同的。
如果以内联方式使用块对象,则无需声明。块对象声明语法与函数指针声明语法相似,但是块对象应使用脱字符(^)而非星号指针 (*)。下面的代码声明一个aBlock变量,它标识一个需传入三个参数并具有float返回值的块。

以上是关于闭包 概念的主要内容,如果未能解决你的问题,请参考以下文章

python函数中闭包的概念说明

kotlin中闭包的概念和原理

有关闭包概念的相关内容

深入理解Lua的闭包:概念和应用

闭包的概念与不闭包的区别(JavaScript)

闭包的概念与不闭包的区别(JavaScript)