闭包是指有权访问另一个函数作用域中的变量的函数
一般情况下,在函数外部是无法访问内部变量的,因为内部变量在函数执行完成后就会销毁,也就是内部变量的生命周期结束。但是如果有闭包存在,便可实现在外部访问函数作用域中的变量。
var age=0;
function Person() {
var age = 10;
console.log(age);
}
Person(); //10
age++;
console.log(age); //1
age++;
console.log(age); //2
Person(); //10
能够验证出,在函数外部无法改变内部的age
var age=0;
function Person() {
var age = 0;
function grow() {
age++;
console.log(age);
console.log(this.age);
}
return grow;
}
var timepass = Person();
timepass(); //1 0
timepass(); //2 0
timepass(); //3 0
timepass(); //4 0
可以看到随着时间的流逝,函数内部的age在递增,全局的age并没有增加,也就是在执行grow()函数时,this对象是window,但还是可以访问到函数Person()函数内的age,两者互不影响
网友评论