Chrome devtools控制台无法显示关闭

时间:2016-02-13 10:24:18

标签: javascript closures

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

我创建了一个全局变量

var p = 3;

和一个功能

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

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

所以,如果这是一个闭包,那么为什么它不会在函数范围中显示为"关闭"?

enter image description here

1 个答案:

答案 0 :(得分:1)

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

var f2  = function(){

    var p = 3;

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

    return f1;

}();

console.dir(f2);

enter image description here