我尝试了一个非常基本的Javascript闭包示例,但是我无法在Chrome开发工具中可视化它。请查看截图。我已经创建了一个全局变量。var p = 3; 和一个函数 function f1() { var q = 2; return p+q; } 这个函数在内部使用了全局变量p,所以这是一个闭包,对吗?如果我理解有误,请指导我。 那么,如果这是一个闭包,为什么它不在函数作用域中显示为“Closure”呢?
在w3schools.com中说:“闭包是指一个函数可以访问其父级作用域,即使在父级函数已关闭后仍然可以访问。” 在您的示例中,p是在全局作用域中定义的,而不是在父级函数中。如果您将代码包装在父级函数中,在开发工具中,您将看到p列在闭包下。var f2 = function(){ var p = 3; var f1 = function(){ var q = 2; return p + q; } return f1; }(); console.dir(f2);