闭包

闭包主要就是提升函数中变量的作用域,首先要理解作用域

  • 函数作为返回值

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);
  • 实际开发中闭包的应用,主要作用于封装变量,收敛权限

最后更新于

这有帮助吗?