定义:当一个函数的返回值是另一个函数,并且返回的那个函数调用了父函数内部的其他变量,当返回的函数被外部调用时,就产生了闭包。
表现形式:是函数外部能调用函数内部定义的变量。
工作原理:利用js中的垃圾回收机制,当一个函数被调用时,开辟一个新的空间,函数调用结束,释放空间,垃圾回收机制调用结束的函数时,发现函数中的变量被其他的函数调用,这些变量不会被释放,会永久保存在内存,只有退出程序才会释放。
闭包的局限性:滥用闭包会造成内存的泄漏由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大。在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。会改变父函数内部变量的值。