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对象的属性。
本文作者:乘舟凉
本文链接:https://www.cnblogs.com/czlnb/p/16774830.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步