简单理解一下闭包

什么是闭包?

function a(){
    var n = 0;
    function b(){
        n++;
        console.log(n)
    }
    b();
    b();
}
a(); //控制台输出1,在输出2

再来一段代码:

function a(){
    var n =0;
    console.log(this) ;//指代a这个对象
    this.b = function(){
        n++;
        console.log(n)
    }
}
var c = new a();
c.b(); //控制台输出1
c.b();//控制台输出2

闭包就是有权访问另一个函数的作用域内变量的函数都是闭包

这里b函数访问了构造函数a里面的变量,所以形成了一个闭包

function a(){
    var n =0;
    function b(){
        n++;
        console.log(n);

    }
    return b;
}
var c =a();
c(); //1
c();//2

上面的代码: var c = counter(); 这一句couter()返回的势函数b,那这句就等于var c = b;

c(),这一句就等于b();注意,函数名这是一个标识(指向函数的指针),而()才是执行的函数。


猜你喜欢

转载自blog.csdn.net/weixin_39100915/article/details/80895242
今日推荐