首页 >

在JS中闭包为什么叫“闭包”,而不用其它名称命名? – 网络|

淘宝访客怎么刷的,微信怎么转发网上的文章,pscs6怎么做一个3d空间在JS中闭包为什么叫“闭包”,而不用其它名称命名? - 网络|在JS中闭包为什么叫“闭包”,而不用其它名称命名

国外的很多教材上定义:闭包除了被引用的的变量外,还包括了函数体,也就是说,闭包和函数对象是同一个概念。②

(这些JS定义,题主应该很熟悉,而且本问题的回答中,已经有网友详细介绍过了,因此偶就不做过多解释了。)

闭包一词来自于《点集拓扑学》(也叫《一般拓扑学》),相关概念如下:

对于非空集合X的某些子集组成的子集族τ,如果满足:

  • Ø,X∈τ;

  • 对于任意多Aᵢ∈τ,i∈I(I是任意指标集),都有∪Aᵢ∈τ;
  • 对于任意A₁,A₂∈τ,都有A₁∩A₂∈τ;

大家称(X,τ)为拓扑结构,τ中的子集称为开集。

对于X的子集N⊆X,以及N中一点x∈N,如果存在开集U∈τ,使得:

x∈U⊆N

则称,N是x的邻域,x是N的内点,N的所有内点称为N的内部,记为Nº。

对于X的子集A⊆X,以及X中的一点x∈X,如果x的任何一个邻域N都和A\{x}相交非空,即,N∩(A\{x})=Ø,则称x是A的一个聚点(也叫极限点)。A的所有聚点,称为A的导集,记为A’,并称A⁼=A∪A’为A的闭包。

注:A⁼应当写成A的上画线,因为头条不支持,所有用A⁼代替。

如果,将JS的函数体看成这里的集合A,将JS函数体所有引用变量的全体看成导集A’,则JS函数体可看成这里的闭包A⁼。

可见JS函数体的定义②和数学上闭包的定义非常相似,所以才将JS函数体叫做闭包的。

当然,相对来说定义②比定义①,更符合数学。


在JS中闭包为什么叫“闭包”,而不用其它名称命名? - 网络|
  • 苹果电脑怎么敲爱心代码? - 网络|
  • 苹果电脑怎么敲爱心代码? - 网络| | 苹果电脑怎么敲爱心代码? - 网络| ...

    在JS中闭包为什么叫“闭包”,而不用其它名称命名? - 网络|
  • 如何打造后端多种盈利的商业模式? - 网络|
  • 如何打造后端多种盈利的商业模式? - 网络| | 如何打造后端多种盈利的商业模式? - 网络| ...

    在JS中闭包为什么叫“闭包”,而不用其它名称命名? - 网络|
  • WebService是什么?如何实现? - 网络|
  • WebService是什么?如何实现? - 网络| | WebService是什么?如何实现? - 网络| ...