阅读 91

JavaScript闭包closure详述

这篇文章主要大家分享的是JavaScript闭包详述,在JavaScript部分,闭包是很重要的东西,所以我们今天就闭包的相关知识做一个总结,需要的朋友可以参考一下,希望对你有所帮助

目录
  • 一、什么是闭包

  • 二、 闭包的作用

前言:

JavaScript部分,闭包是很重要的东西,所以我们今天就闭包的相关知识做一总结。首先,在了解闭包前,我们先要知道作用域的相关知识,前面 作用域相关博文有解释,这里不在赘述。接下来我们来看一下什么是闭包?

一、什么是闭包

闭包(closure)指有权访问另一个函数作用域中变量的函数。 ----- JavaScript 高级程序设计

简单理解闭包就是一个函数,他的特点是:一个作用域可以访问另外一个函数内部的局部变量。

举个简单的例子:

比如说我们现在有一个函数,在他的内部我们定义了一个局部变量,如果别的作用域可以访问这个局部变量,就产生了闭包。所以我们在该函数内部再定义另一个函数,看看里面的函数作用域是否可以访问外函数中的局部变量。

1
2
3
4
5
6
7
8
function f1(){
           var num = 10;
           function f2(){
               console.log(num);
           }
           f2();
       }
       f1();

打印的结果为:

在这里插入图片描述

可以发现成功将值打印出来,所以就产生了闭包。
但是有的读者可能就有疑问:f2函数本身就在f1函数的内部,它本来就可以使用父函数的变量。那我们再在f1函数的外部的作用域访问该变量,看看结果又是如何。

我们将f2函数的调用改为f1函数的返回值,然后在函数外面调用f1函数,如下:

1
2
3
4
5
6
7
8
9
function f1(){
           var num = 10;
           function f2(){
               console.log(num);
           }
          return f2()
       }
       var f = f1();
       f();

此时,就相当于f1外部的作用域访问其内部函数的变量。打印结果为:

在这里插入图片描述

可以发现,这里也可以使用其内部的局部变量,闭包产生。

所以可以得出结论:

闭包: 一个作用域可以访问另外一个函数内部的局部变量。

二、 闭包的作用

我们知道,在函数内部定义的局部变量,只能在函数内部可以使用,并且当我们使用完成后它就会被销毁,但是有闭包以后,这个局部变量就会在函数外部使用并且要等它的外部调用者调用完毕后才会被销毁,所以闭包的作用就是:延伸了变量的作用范围。

到此这篇关于JavaScript闭包closure详述的文章就介绍到这了

原文链接:https://blog.csdn.net/m0_48375854/article/details/121491368


文章分类
百科问答
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐