JavaScript 什么是闭包

╰半夏微凉° 2022-10-31 12:26 335阅读 0赞

JavaScript 什么是闭包?

闭包是指有权访问另一个函数作用域中变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,创建的函数可以访问到当前函数的局部变量。
闭包有两个常用的用途。

1.使我们在函数外部能够访问到函数内部的变量。通过使用闭包,我们可以通过在外部调用闭包函数,从而在外部访问到函数内部的变量,可以使用这种方法来创建私有变量。

2.使已经运行结束的函数上下文中的变量对象继续留在内存中,因为闭包函数保留了这个变量对象的引用,所以
这个变量对象不会被回收。

其实闭包的本质就是作用域链的一个特殊的应用,只要了解了作用域链的创建过程,就能够理解闭包的实现原理。

优点:

1.变量长期驻扎在内存中

2.防止变量污染全局

  1. // 现在你和同事开发同一个模块,然后你发现你们变量名大部分相同,为了管理变量,防止污染全局,可以闭包来解决这个问题
  2. // 开发规范:init代表着入口、初始化的意思
  3. let name = 'XYZ';
  4. let init = (function () {
  5. let name = 'LM';
  6. function callName() {
  7. console.log(name);
  8. }
  9. return function () {
  10. callName();
  11. }
  12. }());
  13. let initXie = (function () {
  14. let name = '同事开发部分';
  15. function callName() {
  16. console.log(name);
  17. }
  18. return function () {
  19. callName();
  20. }
  21. }());
  22. init();
  23. initXie();

输出结果:
LM
同事开发部分

缺点:

物极必反,函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题。解决方法是在退出函数之前,将不使用的局部变量全部删除

发表评论

表情:
评论列表 (有 0 条评论,335人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JavaScript 什么

    JavaScript 什么是闭包? 闭包是指有权访问另一个函数作用域中变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,创建的函数可以访问到当前函数的局部

    相关 javascript什么

    什么是js闭包? Js闭包是前端面试时最常见的题目。而在实际开发过程中,也会经常因为不注意闭包而导致代码运行得不到自己想要的结果。 想要掌握闭包,就必须了解jav

    相关 什么

    什么是闭包? 说明 闭包   有些读者可能很好奇,为什么闭包会成为一个独立的概念,以及为什么它需要编程语言提供额外的支持。这些疑惑可以本文中找到答案。

    相关 什么

    闭包 定义:闭包是指有权访问另一个函数作用域中变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量,利用闭包可以突破作用链