1.闭包
闭包是有权访问另一个函数作用域的变量的函数。创建闭包的常见方式就是在一个函数中创建另一个函数
JS允许使用内部函数---即函数定义和函数表达式位于另一个函数的函数体内。而且,这些内部函数可以访问它们所在的外部函数中声明的所有局部变量、参数和声明的其他内部函数。当其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包
2.闭包的作用
获取变量的内部函数和让变量永远保存在内存中
3.this对象
在闭包使用的过程中this对象也会导致一些问题。this对象是在运行时基于函数的执行环境绑定的:在全局函数中,this=window,而当函数被作为某个对象的方法调用时,this等于那个对象。但是匿名函数的执行具有普环境局限性,因此,this通常指向window。
4.闭包原理
(1)在后台执行环境中,闭包的作用域链包含着他自己的作用域,包含函数的作用和全局作用域
(2)通常函数的作用域及其变量都会在函数执行之后被销毁
(3)但是当函数返回一个闭包时,这个函数的作用域将会一直在内存中保存直到闭包不存在为止。