- 闭包 {#闭包}
- #
闭包 {#闭包}
闭包主要就是提升函数中变量的作用域,首先要理解作用域
- 函数作为返回值
function F1() {var a = 100;//返回一个函数(函数作为返回值)return function () {console.log(a);//自由变量,父作用域中查找}}//f1得到一个函数var f1 = F1();var a = 200;f1();
- 函数作为参数传递
function F1() {var a = 100;return function () {console.log(a); //自由变量,父作用域中查找}}var f1 = F1();function F2(fn) {var a = 200;fn();}F2(f1);
- 实际开发中闭包的应用,主要作用于封装变量,收敛权限
//闭包实际应用中主要作用于封装变量,收敛权限function isFirstLoad() {var _list = [];return function (id) {if(_list.indexOf(id) >= 0){return false;}else {_list.push(id);return true;}}}// 应用var firstLoad = isFirstLoad()firstLoad(10) // truefirstLoad(10) // false;firstLoad(20) // true
