闭包的英文是closure,又称词法闭包(Lexical Closure)和函数闭包(Function Closure)
概念:闭包是由函数以及创建该函数的词法环境组合而成。这个环境包含了这个闭包创建时所能访问的所有局部变量。https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Closures
是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。
举例:
闭包的特性:
1.封闭性:外界无法访问到闭包内部的数据,如果在闭包内声明变量,外界是无法访问的,除非闭包主动向外界提供访问接口。
2.持久性:一般的函数调用结束之后,系统会自动注销函数。而对于闭包来说,在外部函数被调用之后,闭包结构依然保存在系统中,闭包中的数据依然存在,从而实现对数据的持久使用。
优点:1.保护内部变量不被外界所污染,内部变量也不污染外部变量。2.可以通过返回值访问内部变量的值。3.封装
缺点:使用闭包会占有内存资源,过多的使用闭包会导致内存溢出等。(转载)


使用场景:
1.采用函数引用方式的setTimeout调用。
2.将函数关联到对象的实例方法
3.封装相关的功能集
网友评论