JavaScript学习总结二:js闭包(Closure)概念

本文详细阐述了JavaScript闭包的概念、特点及其实现原理,通过实例解析闭包如何形成及作用过程,揭示闭包在JavaScript编程中的核心价值。闭包机制允许内部函数访问并修改外部函数的作用域内的变量,直至外部作用域被销毁为止,这为开发者提供了强大的功能,如持久化状态、模块封装等。通过理解闭包,开发者能更灵活地管理和复用代码,提高代码的可维护性和复用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

闭包的两个特点:

1、作为一个函数变量的一个引用,当函数返回时,其处于激活状态。

2、一个闭包就是当一个函数返回时,一个没有释放资源的栈区。

概念描述(个人理解仅供参考):

当一个函数嵌套中又嵌套了其他的函数时,我们可以把它们叫做外层函数和内嵌函数。内嵌函数可以访问外层函数中定义的变量(局部变量)。假设内嵌函数用到了外层函数的变量,如果我们又把内嵌函数做为外层函数的返回值,让外界可以通过外层函数得到内嵌函数的引用,这时闭包就形成了。外界通过外层函数得到内嵌函数的引用之后,外层函数的职责就完成了,在传统语言中,这时会释放外层函数中定义的局部变量,但是在JavaScript闭包中不会!内嵌函数会锁定外层函数中的局部变量,直到外界对内嵌函数引用结束,才释放变量。闭包之所以能够实现根本是因为JavaScript是解释执行的,它会扫描整个代码,只要外界用到了内嵌函数,内嵌函数用到的外层函数的变量就不会释放,直到内嵌函数引用结束。说了这么多概念很抽象,再来个例子+完美注释就什么都明白了!

<script type="text/javascript">
	function fun1() //fun1就是上边讲的外层函数
	{
		var str = "我爱中国";
		return function (){alert(str);};//定义一个匿名内嵌函数(我为了方便才匿名的),这个匿名函数
		//用到了外层函数fun1的变量str,然后把str打印出来。注意return,这个匿名函数是fun1的返回值
	}
	var fun2 = fun1();//fun2就是上边讲的外界(函数),在这fun2引用了fun1中的匿名函数
	alert("外层函数执行完毕!");
	fun2();//执行fun2,实际上就是执行内嵌的匿名函数
</script>

这个例子输出的结果是:“外层函数执行完毕!”、“我爱中国”。证明了fun1中的str局部变量并没有被释放。

实际应用:

由于我也是初学,还不知道闭包这个东东有什么用。。。。举不出实际应用的例子,不能再研究了,再研究就要挨骂了。。。但是应该有这么个环节,占个位吧!


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值