函数的闭包

什么是闭包

闭包就是一个函数以及对它的语法环境的引用,这两者的组合就叫闭包。更容易理解的说法就是:闭包能让外部作用域访问到函数作用域中的变量。另一种

下面是一个简单的闭包案例:

function foo(){
	let name = 'zs'
	function zoo(){
	return this.name;
		}
	zoo()

}

在通常情况下,外部作用域是无法访问函数作用域中的变量的。但使用闭包,访问到了在foo函数中定义的变量。

闭包的作用

  1. 在函数外调用函数定义的变量(如上例所示)
  2. 将函数环境暂存在内存中,不会被js的垃圾回收机制清除。

闭包的生成条件

  • 函数嵌套一个函数
  • 内部函数引用了外部函数的变量
  • 参数和变量不会被回收
  • 外部函数返回(return)了内部函数。(一个待定条件)

闭包的注意事项

  1. 闭包会把函数的变量存在内存之中,如果闭包使用泛滥,将会导致内存占用过多,网页性能下降。ie用户还会导致内存泄漏。
  2. 由于闭包能访问函数作用域中的变量,所以不要随意使用这个特性,因为父级函数的域同时被多个子函数共享,如果随意改变父级函数作用域中的变量,所有子函数都会被影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值