没有变量的嵌套函数中是不是存在闭包

Posted

技术标签:

【中文标题】没有变量的嵌套函数中是不是存在闭包【英文标题】:Does Closure exist in a Nested function without variables没有变量的嵌套函数中是否存在闭包 【发布时间】:2022-01-10 19:56:49 【问题描述】:

我们可以说这段代码中存在闭包

function foo()
        return function foo2()
                   console.log("Inner Function");
          


let x = foo();
x();

【问题讨论】:

【参考方案1】:

不,这里的内部函数不是闭包。它没有访问范围之外的任何变量。

这是来自 chrome 控制台的快照。

但是当内部函数访问一个定义在其范围之外的变量时,整个环境,即引用其周围环境的函数,就变成了一个闭包。您可以在控制台中看到范围关闭

【讨论】:

无论变量如何,都会创建错误的闭包

以上是关于没有变量的嵌套函数中是不是存在闭包的主要内容,如果未能解决你的问题,请参考以下文章

Python中的闭包

嵌套函数和闭包

Python嵌套函数和闭包

实现闭包(摘录自 权威指南184页)

函数的嵌套和作用域

javaScript闭包