闭包是打破作用域的函数
有权访问另一个函数作用域内变量的函数都是闭包。
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的值取出来进行使用。