我相信我在闭包的定义中发现了歧义。具体来说,似乎它允许外部范围成为全局范围。
例如来自维基百科的文章:http://en.wikipedia.org/wiki/Closure_(computer_science)
“闭包(也是词法闭包,函数闭包或函数值)是一个函数以及该函数的非局部变量的引用环境。”
特别是非本地可能包括全局变量。甚至关于http://en.wikipedia.org/wiki/Non-local_variable的非局部变量的文章也指出“该术语可以指全局变量”。它确实通过声明全局变量不是通常的意思来确定问题的资格。
尽管如此,我认为我们可能需要在闭包定义中更加严格,以将全局变量明确排除为非局部变量。或者是否存在全局变量在此上下文中有效的情况?
编辑:
基于收到的评论和额外的想法,对我来说似乎有一个特定的情况,即当前的闭包定义,忽略全局变量,不足之处。那就是当代码/函数可能有资格作为闭包时,仅引用非局部变量也是全局变量
答案 0 :(得分:0)
IMO,是的,请参阅上面的评论。它可能对应用程序开发人员无关紧要,但对编译器/解释器开发人员来说应该很重要。如果你能在一开始就认识到这一点,那就没有意义了。