closure
这篇笔记来自于 2020.1.9 六角学院的线上研讨会,讲者为苏泰安老师,老师不只讲解了如何善用函数来帮助程式码更简洁,也介绍了一些以函数为编写基础的语言(例如 Elixir),不过由于我对 Javascript 以外的语言并不了解,所以这篇笔记并不会着墨于其他语言。 在 JavaScript 函式是一级公民,可以传入另一个函式作为参数。 传入其他函式作为参数的函式称为 Callback function
闭包(closure)是 Javascript 语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 理解闭包,首先必须理解变量作用域。前面提到,JavaScript 有两种作用域:全局作用域和函数作用域
终于要准备倒数的最终章,卸下每天值日生的任务。 3月5日包厅是这个活动的closure,欢迎参加这场最志趣相投的观影活动。不论你有没有先看过电影,相信这场的氛围应该令人难忘
可以看出在第一个函数中只改到了 local namespace,而第二个函数加入了 global 才让 num 变成在 global namespace 之中。 Closure 也是个函数,但其绑定了一个环境,包含了一些 free variables 在之中。而这些 free variable 即使在定义的作用域已经无效了的时候仍然能够被使用
一个群满足了 closure、associativity、identity、inverse 四个条件(注:不保证 commutative )。而李群为具有连续性质的群。 其他更多的例子可以参考 [3]
轻量级: 它用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里。 可扩展: Lua提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样。 其它特性: 自动内存管理;只提供了一种通用类型的表(table),用它可以实现数组,哈希表,集合,对象; 语言内置模式匹配;闭包(closure);函数也可以看做一个值;提供多线程(协同进程,并非操作系统所支持的线程)支持; 通过闭包和table可以很方便地支持面向对象编程所需要的一些关键机制,比如数据抽象,虚函数,继承和重载等
轻量级: 它用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里。 可扩展: Lua提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样。 其它特性: 自动内存管理;只提供了一种通用类型的表(table),用它可以实现数组,哈希表,集合,对象; 语言内置模式匹配;闭包(closure);函数也可以看做一个值;提供多线程(协同进程,并非操作系统所支持的线程)支持; 通过闭包和table可以很方便地支持面向对象编程所需要的一些关键机制,比如数据抽象,虚函数,继承和重载等