闭包

概念

闭包是能够访问其他函数内部变量的函数。常用的创建方式是子函数。

/**
 * 通过子函数创建闭包
 */
function outer() {
  var name = 'arvin';

  return function inner() {
    console.log(name);
  };
}
var a = outer(); // a是闭包,它能够访问outer的内部变量name
a();

特点

被闭包使用的变量将不会被自动回收。

function a() {
  var n = 0;
  function add() {
    n++;
    console.log(n);
  }
  return add;
}
var a1 = a(); //注意,函数名只是一个标识(指向函数的指针),而()才是执行函数;
a1(); //1
a1(); //2  第二次调用n变量还在内存中

注意! 下面的代码因为一直重新创建函数,返回值一直都是 1

a()(); // 1
a()(); // 1
© 2022  Arvin Xiang
Built with ❤️ by myself