JavaScript中函数闭包的应用

1. 事件闭包的理解:闭包是指有权限访问另一个函数作用域中的变量的函数.在 javascript 语言中,闭包就是函数和该函数作用域的组合.在JavaScript中任何一个函数都是一个闭包,但是嵌套的函数功能更强(闭包的作用更加强大,产生一个作用域链)
2.变量的作用域:要理解闭包,首先必须理解 Javascript 特殊的变量作用域.变量的作用域无非就是两种:全局变量和局部变量.
Javascript 语言的特殊之处,就在于函数内部可以直接读取全局 变量.另一方面,在函数外部自然无法读取函数内的局部变量.
注:在函数内部声明变量的时候,一定要使用var命令.如果不用的话,你实际上声明了一个全局变量!不如写在函数之外.
3.如何从外部读取局部变量:
出于种种原因,我们有时候需要得到函数内的局部变量.但是,前面已经说过了,正常情况下,这是办不到的,只有通过变通方法才 能实现. 那就是在函数的内部,再定义一个函数.
父对象的所有变量,对子对象都是可见的,反之则不成立,从而形成js中特殊的作用域链 scope chain;
例:

<script type="text/javascript">
	function rengh(){
		var color='yellow';
		var width=200+'px';
		var height=300+'px';
		function linggh(){
			return color;
		}
		return linggh();
	}
	alert(rengh());
</script>

4.闭包的再一次理解:
闭包就是能够读取其他函数内部变量的函数;由于在 Javascript 语言中,只有函数内部的子函数才能读取局部 变量,因此可以把闭包简单理解成“定义在一个函数内部的函数”. 所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁.
5.闭包的应用:
闭包可以使用在许多地方.它的最大作用有两处,一个是前面提到 的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中.
6.闭包的案例:

<script type="text/javascript">			
//	创建一个学生 对象,具备属性     color, height,weight
	function Student(){
		var color='yellow';
		var height=1.82;
		var weight=60; //表示体种的属性
		
		//第一种方法 不常用(不强大);
		//return '肤色:'+color+'身高:'+height+'体中:'+weight;
		//第二种方式: 通过在函数体内定义函数 返回,功能更加强大
		function Student_01(){
			return '肤色:'+color+'身高:'+height+'体中:'+weight;
		}
		return Student_01();
	}
//	对于以上案例: Student_01() 就是一个闭包函数
//	闭包就是能够读取其他函数内部变量的函数
	//有个老师对象 想访问学生对象的属性(详细信息)
	function Teacher(){
		alert(Student());
	}
	Teacher();
	/*闭包可以使用在许多地方.它的最大作用有两处:
		一个是前面提到的可以读取函数内部的变量,
		另一个就是让这些变量的值始终保持在内存中*/
</script>

猜你喜欢

转载自blog.csdn.net/qq_43434300/article/details/84992936