ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[toc] #### 基本闭包 ``` //函数模式的闭包:在一个函数中有一个函数 function f1() { var num = 10; function f2() { console.log(num); } //函数调用 f2(); } f1(); //对象模式的闭包:函数中有一个对象 function f3() { var num = 20; var obj = { age: num }; console.log(obj.age); } f3(); ``` #### return式闭包 ``` function f1() { var num = 10; //子函数可以读取父级的局部变量,再将子函数 return 出去,即可形成闭包 return function () { console.log(num+1) return num } } var ff = f1(); // ff(); //11 var num = ff(); console.log(num); //10 ``` #### 闭包缓存数据 ``` function f1() { var num = 10; num++; return num; } //每次调用 f1 都被重新调用了一次,num 都是从 10 开始 console.log(f1()); //11 console.log(f1()); //11 console.log(f1()); //11 function f2() { var num = 10; return function () { num++; return num; } } //num 只调用了一次 var ff = f2(); //ff 等于匿名函数 console.log(ff()); //11 console.log(ff()); //12 console.log(ff()); //13 ```