剖析js中的闭包,理解闭包到底是个什么,有怎样的作用(代码片段)

考拉的墨尔本 考拉的墨尔本     2022-12-12     512

关键词:

关于js中的闭包,网上的资料满天飞。虽然每个人对于闭包都有自己独特的见解,但是总体上来说对于闭包的实际理解是一致的,只是描述的方式有所不同。那么以怎样的方式可以让读者更加简单清楚理解闭包呢?这里本人做了一些工作,以一种简单的方式将闭包描述出来。

1.闭包的概念

闭包就是定义在函数内部并且能够读取其他函数局部变量的函数。我们结合代码可以更好的理解
    	<script type="text/javascript">
    		function fun1()
    			var str="外部函数变量";
    			function fun2()
    				console.log(str);
    			
    			return fun2;//在fun1函数内部返回
    		
    		var result=fun1();
    		result();
    	</script>

以上的代码片段就是一种闭包,我们在外部函数fun1()中定义了一个内部函数fun2(),并且在fun2()的内部使用了fun1()的变量,最后我们又把内部函数fun2()函数返回。结合我们对闭包的定义: 外部函数------------------------------------------------->fun1() 外部函数变量------------------------------------------->str 内部函数------------------------------------------------->fun2()

2.闭包的常见写法

             <script type="text/javascript">
    		function fun1()
    			var str="外部函数变量";
    			return function()
    				console.log(str);
    			
    		
    		fun1()();
使用匿名函数作为内部函数返回是最常见的实现闭包的方式,这种方式和上面的方式相比更加的简单,更加容易理解。

3.闭包的作用

1.通过闭包我们可以在函数外部读取函数内部的变量,简单来说闭包就是将函数的外部和内部进行了连接。 2.使用闭包之后,外部函数的变量会始终存在与内存中,不会在外部函数调用后被GC回收。

4.使用闭包应该注意的问题

1.因为闭包会使得函数的变量始终存在与内存中,所以会对内存造成很大的消耗,会造成网页的性能问题。并且在IE中还会造成内存泄漏的问题。 2.因为闭包会使得外部函数的变量始终曝露在内存中,应该注意尽量不要改变外部函数的变量值。

js-我理解的闭包

...数嵌套在父函数的内部,这样,子函数就可以访问父函数中的变量。1functionadd(){2vara=1;        //暂且叫innerAdd函数        3returnfunction(){4a++;5console.log(a);6}7}8ad 查看详情

js中的闭包理解

...,也能让考官对你的水平有个评估.那么我先来说说我对js中的闭包的理解.  闭包是很多语言都具备的特性,在js中,闭包 查看详情

闭包构建函数简单工厂模式

...通了一些原理性的东西。对js有了更深的理解。首先说说闭包,闭包在我们实际开发中处处被用到,那个它到底是个什么东西呢?varuser=(function(){varUSER={name:"mapleTao",password:"123456"}return{getName:function(){returnUSER.name;},getPassword:f 查看详情

深入理解javascript系列(16):闭包(closures)

...这里还是要试着从理论角度来讨论下闭包,看看ECMAScript中的闭包内部到底是怎样工作的。正如在前面的文章中提到的。这些文章都是系列文章,相互之间都是有关联的。因此。为了更好的理解本文要介绍的内容,建议先去阅读... 查看详情

js基础---到底什么是闭包?它是如何形成的?

1.闭包  先看一个简单的例子functiona(){  vari=0;functionb(){  alert(++i);}returnb;}varc=a();c();这段代码有两个特点:  1、函数b嵌套在函数a内部;  2、函数a返回函数b。如果要更加深入的了解闭包以及函数a和嵌套函数b的关系,... 查看详情

js----深入理解闭包

...。 闭包的概念一个闭包就是一个函数和被创建的函数中的作用域对象的组合。(作用域对象下面会说)通俗一点的就是“只要一个函数中嵌套了一个或多个函数,那么我们就可以称它们构成了闭包。”类似这样:1functionA(){ 查看详情

详解js中的闭包(代码片段)

前言在js中,闭包是一个很重要又相当不容易完全理解的要点,网上关于讲解闭包的文章非常多,但是并不是非常容易读懂,在这里以《javascript高级程序设计》里面的理论为基础。用拆分的方式,深入讲解一下对于闭包的理解,... 查看详情

js闭包的理解

说到 闭包 ,这是js不得不提的一个特性,很多传统语言都不具备这样的特性,比如JAVAC等等。之前看书的时候,总是理解不好什么是闭包!下面就通过手绘一张原理图,来理解一下:要理解闭包,首先必须理解Javascript特... 查看详情

js闭包理解

Js闭包理解在很多面试题中都会问什么是js的闭包,为什么需要使用闭包,使用闭包的优缺点!我在面试其他人的时候也喜欢问这个问题,回答的也是千奇百怪,现在就总结一下我对闭包的理解。闭包是一种概念,这种概念比较... 查看详情

javascript闭包全方位解析

总结概念:有权访问另一个函数作用域中的变量的函数优点:内存驻留、避免全局变量污染缺点:内存泄漏(?)、无法预知变量被更改相关知识点:作用域、内存驻留、内存泄露、JS执行机制、内存机制、垃圾回收机制一、什么是闭包1... 查看详情

谈一谈闭包

...候,都要纠结如何开头…烦~~今天这篇文章我们来探讨一下闭包,因为我在查阅很多资料时,发现这些文章对于闭包的理解很多都是有出入的,所以今天我们来探讨一下什么才是闭包.当然,这篇文章大多数是概念性的东西,代码演示可能... 查看详情

我理解的闭包

以下只是个人的一些见解问题:什么是闭包,为什么会有闭包,闭包有什么作用。1、什么是闭包:闭包,就是在函数1里面声明一个函数2,并在函数1中返回一个函数2,,使在函数1外面可以通过函数2来使用函数1的局部变量。2、... 查看详情

js进阶之闭包

1.首先说下什么是闭包,闭:封闭,包:就像我们的包包~;虽然我在扯淡但是也有其道理咯,闭包就有点像java里面的封装一样,包属性和方法都封装到对象内部,在外部通过共有的get、set方法获取或者设置其值,但是js中不是这... 查看详情

java程序员理解js中的闭包

...函数内部通过某种方式访问一个函数内部的局部变量2.Java中的类似操作publicclassDemo{privatestaticStringa;publicstaticStringgetA(){returna;}}Demodemo=newDemo();//在这里需要访问demo中的a属性怎么办?demo.a;//会报错demo.getA();//可以3。javaScript中 查看详情

什么是闭包

...9n=99在执行中被n2捕捉,n1执行完毕(函数执行完毕,内存中的变量会被销毁),n=99通过 查看详情

个人对js闭包的理解

 闭包算是前端面试的基础题,但我看了很多关于闭包的文章博客,但感觉很多对于闭包的理想还是有分歧的,现在网上对闭包的理解一般是两种:有些文章认为闭包必须要返回嵌套函数中里面用到外面函数局部变量的方法才叫闭... 查看详情

js闭包(closure),个人理解

一、闭包概念理解  各种专业文献上对js"闭包"(closure)定义非常抽象,贼难看懂。我的理解是,闭包就是能够读取某函数内部变量的函数。由于在Javascript语言中只有在函数内部的函数才能读取局部变量,因此可以把闭包简单... 查看详情

深入理解javascript王福朋,厉害了word哥

学习前端有一段时间了,一直以来也没搞明白js中这个闭包到底是个什么东西,有时候看看别人的博客或者知乎的文章,大概上有个了解,可过一段时间也就忘了。偶然间有幸拜读了博客园-王福朋的这一系列文章《深入理解javasc... 查看详情