美文网首页
JavaScript闭包

JavaScript闭包

作者: 一直以来都很好 | 来源:发表于2016-09-06 20:47 被阅读0次

    闭包 

    闭包是指可以包含自由(未绑定到特定对象)变量的代码块;这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量)。“闭包” 一词来源于以下两者的结合:要执行的代码块(由于自由变量被包含在代码块中,这些自由变量以及它们引用的对象没有被释放)和为自由变量提供绑定的计算环境(作用域)。在PHP、Scala、Scheme、Common Lisp、Smalltalk、Groovy、JavaScript、Ruby、 Python、Go、Lua、objective c、swift 以及Java(Java8及以上)等语言中都能找到对闭包不同程度的支持。

    中文名 闭包 外文名 closure 相关学科 离散数学 用    途 编程逻辑 特    点 未绑定到特定对象

    目录

    1 拓扑概念

    ▪ 本质

    ▪ 度量空间中的

    ▪ 极限点

    ▪ 性质

    2 举例说明

    3 语法结构

    4 环境表达

    ▪ 代码

    ▪ 特点

    ▪ 作用

    ▪ 另一个例子

    ▪ 结果

    ▪ 应用场景

    ▪ 匿名内部

    ▪ 定义

    5 离散数学中

    6 Lua中

    ▪ 包

    ▪ 可以这样做

    ▪ 假设

    ▪ 外部局部变量

    ▪ 二种意义

    拓扑概念编辑

    集合A的闭包定义为所有包含A的闭集之交。A的闭包是包含A的最小闭集。

    本质

    集合 S 是闭集当且仅当 Cl(S)=S(这里的cl即closure,闭包)。特别的,空集的闭包是空集,X 的闭包是 X。集合的交集的闭包总是集合的闭包的交集的子集(不一定是真子集)。有限多个集合的并集的闭包和这些集合的闭包的并集相等;零个集合的并集为空集,所以这个命题包含了前面的空集的闭包的特殊情况。无限多个集合的并集的闭包不一定等于这些集合的闭包的并集,但前者一定是后者的父集。

    若 A 为包含 S 的 X 的子空间,则 S 在 A 中计算得到的闭包等于 A 和 S 在 X 中计算得到的闭包(Cl_A(S) = A ∩ Cl_X(S))的交集。特别的,S在 A 中是稠密的,当且仅当 A 是 Cl_X(S) 的子集。

    度量空间中的

    对欧几里德空间的子集 S,x 是 S 的闭包点,若所有以 x 为中心的开球都包含 S 的点(这个点也可以是 x)。

    这个定义可以推广到度量空间 X 的任意子集 S。具体地说,对具有度量 d 的度量空间 X,x 是 S 的闭包点,若对所有 r > 0,存在 y 属于 S,使得距离 d(x,y) < r(同样的,可以是 x = y)。另一种说法可以是,x 是 S 的闭包点,若距离 d(x,S) := inf{d(x,s) : s 属于 S} = 0(这里 inf 表示下确界)。

    这个定义也可以推广到拓扑空间,只需要用邻域替代“开球”。设 S 是拓扑空间 X 的子集,则 x 是 S 的闭包点,若所有 x 邻域都包含 S 的点。注意,这个定义并不要求邻域是开的。

    极限点

    闭包点的定义非常接近极限点的定义。这两个定义之间的差别非常微小但很重要——在极限点的定义中,点 x 的邻域必须包含和 x 不同的集合的点。

    因此,所有极限点都是闭包点,但不是所有的闭包点都是极限点。不是极限点的闭包点就是孤点。也就是说,点 x 是孤点,若它是 S 的元素,且存在 x 的邻域,该邻域中除了 x 没有其他的点属于 S。

    对给定的集合 S 和点 x,x 是 S 的闭包点,当且仅当 x 属于 S,或 x 是 S 的极限点。

    集合的闭包

    集合 S 的闭包是所有 S 的闭包点组成的集合。S 的闭包写作 cl(S),Cl(S) 或 S−。

    性质

    cl(S) 是 S 的闭父集。

    cl(S) 是所有包含 S 的闭集的交集。

    cl(S) 是包含 S 的最小的闭集。

    集合 S 是闭集,当且仅当 S = cl(S)。

    若 S 是 T 的子集,则 cl(S) 是 cl(T) 的子集。

    若 A 是闭集,则 A 包含 S 当且仅当 A 包含 cl(S)。

    有时候,上述第二或第三条性质会被作为拓扑闭包的定义。

    在第一可数空间(如度量空间)中,cl(S) 是所有点的收敛数列的所有极限。

    相关文章

      网友评论

          本文标题:JavaScript闭包

          本文链接:https://www.haomeiwen.com/subject/dbadettx.html