js闭包理解

js闭包其实就是一句话 闭包变量就是函数对象的属性
例1

function f1(){

var n=999;

function f2(){
n++;
alert(n); 
}

return  f2;

}

var result=f1();

result();
result();

执行结果为 1000和1001,为什么呢?因为js中万物皆对象 f1在被调用时会创建一个函数对象A,n和f2是它的属性,而f2每次被调用时都是访问对象A的属性

例2

function f1(){

var n=999;

function f2(){
n++;
alert(n); 
}

return  f2;

}

var result=f1();

result();
var result=f1();
result();

执行结果是1000和1000,因为第一次f1被调用时创建了A对象,result获取的是A的f2属性,访问的是A对象的属性,而第二次f1被调用是创建的是B对象,result获取的是B的f2属性,访问的是B对象的属性。

posted @ 2022-10-10 10:53  乘舟凉  阅读(36)  评论(0编辑  收藏  举报