胖蔡说技术
随便扯扯

什么是闭包?如何实现闭包?

前端开发过程中,JS内的内嵌函数可以访问外层函数的所有变量和函数,但是内嵌函数外部却并不能访问内嵌函数的内部变量及其内部的函数。这和JS中的执行上下文环境有关,相关可参考《JS中如何理解执行上下文?》

闭包是什么?

总结闭包的特点如下:

  • 闭包内可访问其作用域内的所有函数、变量。
  • 闭包作用域内,其外层函数无法访问,故其闭包内的变量在外层函数未释放时,其会一直保存在内存中。

如何实现闭包?

闭包的常见实现方式就是在一个函数内部创建另外一个函数,通过另外一个函数访问这个函数的局部变量,示例代码如下:

function fn(){
  var times = 0;
  var c = function() {
    return ++times;
  }
  return c;
}


var count = fn();

console.log(count()); // 1
console.log(count()); // 2
console.log(count()); // 3
console.log(count()); // 4

如上通过闭包函数实现在全局作用域中访问局部变量times,并让变量的值始终存储在内存中,需要注意的是由于定义一个变量count用于指向fn函数的引用,所用在调用count()执行完fn函数后并不会销毁fn的函数执行上下文,times也会依然保存在内存中。

赞(0) 打赏
转载请附上原文出处链接:胖蔡说技术 » 什么是闭包?如何实现闭包?
分享到: 更多 (0)

请小编喝杯咖啡~

支付宝扫一扫打赏

微信扫一扫打赏