Chrome devtools 控制台不显示关闭

Roy*_*Roy 4 javascript closures

我正在尝试一个非常基本的 Javascript 闭包示例,但我无法在 Chrome devtools 中将其可视化。请看截图。

我创建了一个全局变量

var p = 3;
Run Code Online (Sandbox Code Playgroud)

和一个函数

function f1() {
    var q = 2; 
    return p+q;
}
Run Code Online (Sandbox Code Playgroud)

这个函数在p里面使用了全局变量,所以这是一个闭包,对吧?如果我的理解不正确,请指导我。

那么,如果这是一个闭包,那么为什么它不在函数作用域中显示为“闭包”呢?

在此处输入图片说明

Ben*_*ing 5

w3schools.com 说“闭包是一个可以访问父作用域的函数,即使在父函数关闭之后也是如此。” 在您的示例中, p 是在全局范围内定义的,而不是父函数。如果您将代码包装在父函数中,则在开发工具中,您将看到 p 在闭包下列出。

var f2  = function(){

    var p = 3;

    var f1 = function(){
        var q = 2;
        return p + q;
    }

    return f1;

}();

console.dir(f2);
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明