postpass js闭包 – 个人博客

js闭包

JavaScript 变量属于本地或全局作用域。

全局变量能够通过闭包实现局部(私有)。

通俗的讲就是函数a的内部函数b,被函数a外部的一个变量引用的时候,就创建了一个闭包。

let fun = (function () {
  let count = 0;
  return {
    getCount: () => {
      return count;
    },
    add: () => {
      count++;
    },
  };
})();

fun.add();
console.log(fun.getCount());

闭包就是一个函数引用另一个函数的变量,因为变量被引用着所以不会被回收,因此可以用来封装一个私有变量。这是优点也是缺点,不必要的闭包只会增加内存消耗。或者说闭包就是子函数可以使用父函数的局部变量,还有父函数的参数。

优点:实现变量的私有化

缺点:使用闭包会占有内存资源,过多的使用闭包会导致内存溢出等

标签

发表评论