1. 请解释一下什么是闭包
对于闭包,相信每个人都有自己的见解,并且网上一大推关于闭包的概念,我的理解是能够访问到其包含(外部)函数内部变量的函数。
主要有两个特性:
一个是可以读取其包含函数内部的变量;另一个就是让这些变量的值始终保持在内存中。
使用闭包的注意点:
过多使用会造成内存泄露的现象,因为闭包会引用其包含函数作用域的变量对象,使得即使包含函数执行完毕后,其作用域的变量对象不会被销毁,即其占用的内存无法得到回收,直至闭包执行完毕后才会被销毁。所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。
function A(){ var S=0; function B(){ alert(++S); } return B; } var C=A(); C();