闭包

闭包是打破作用域的函数

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

function a() {
    var n = 0;

    function inc() {
        n++;
        console.log(n)
    }

    inc();
    inc();
}

a(); // 1 2

我们通过执行a()函数实现我们想要的效果,但如果想要获取到其中的n的值可以用闭包解决

function a() {
    var n = 0;

    this.inc = function() {
        return n;
    }
}

var c = new a();
c.inc(); // 获取内部函数n的值

如我们用闭包写一个求圆形面积函数

function cirle(a) {
    var pi = 3.14;
   
    var that = this;  
    this.are = function(a){
        return a*a*pi;
    }

    this.pivalue = function (){
        return pi;
    }
} 

var cirle1 = new cirle();
cirle1.are(8);  // 200.96
cirle1.pivalue(); //3.14

console.log(cirle1.pivalue()*8) ; //25.12

通过以上方式,我们可以将pi的值取出来进行使用。

posted @ 2018-03-28 09:54  Kaso基佬康  阅读(93)  评论(0编辑  收藏  举报