Js函数闭包

一、什么是闭包

1.定义 :如果在一个内部函数里,对在外部作用域(但不是全局作用域)的变量进行引用,那么内部函数就被认为是闭包。
2.如何创建闭包:
常见方式:在一个 函数内部 创建另一个函数。
例:

function createComparsionFunction(propertyName){
			return function(object1,object2){
			
			//下面这两行代码虽然在函数内部,
			但是可以调用该函数外部的变量,即porpertyName
			
				var value1=object[propertyName];
				var value2=object[propertyName];
				
				if(value1<value2){
					return -1;
				}
				else if(value1>value2){
					return 1;
				}
				else{
					return 0;
				}
			};
		}

3.为什么要有闭包:
由于作用域,我们无法在函数外访问函数里的变量,但我们有时又会需要使用,这时就可以用到闭包。
4.闭包的作用:
(1)可以读取整个父级作用域函数内部的变量。
(2)让这些变量的值始终保持在内存中。
(3)避免使用过多的全局变量,从而使得全局变量污染。

注意:
(1)闭包会携带包含它的函数的作用域,因此会比其他函数更占内存,过多使用闭包会使占用内存过大,从而在IE中可能导致内存泄露。因此在使用闭包后最好将当前不需使用的变量删除,如将这些值设为null,从而解除引用。
(2)闭包只能取得闭包函数中任何变量的最后一个值,前面的会与后面的值保持一致。

function createFunctions(){
			var result = new Array;
			for(var i=0;i<10;i++){
				result[i]=function(){
					return i;
				};
			}
			return result;
		}
//result[i]的每个值都是10.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值