网上查阅很多前辈的回答,加上自己的理解,最后将闭包这样理解:
闭包是指函数外部可以访问函数作用域中局部变量的函数。由于在javascript语言中,只有函数内部的子函数才能够读取局部变量,因此可以把闭包简单理解为“定义在函数内部的函数”。 而return的作用就是为了把数据暴漏在外面供外部使用。
特点:
1. 让外部访问函数内部变量成为可能;
2. 父函数中的局部变量会常驻在内存中(重复调用闭包时,会在内存中存储的局部变量的基础上进行操作);
3. 可以避免使用全局变量,防止全局变量污染;
4. 由于闭包会使函数中的变量都被保存在内存中空间中,它不会随着函数结束而被释放,内存消耗很大,导致网站运行效率下降,IE中会造成内存泄漏。