所谓的js闭包就是在函数的外部能访问到函数内部变量:
function a() { var i = 0; function b() {
alert(++i);
} return b; } var c = a(); c();
或者写成
function a() { var i = 0; return b() { alert(++i); } } var c = a(); c();
这样定义的a函数的i变量对于a的子函数b来说依然是有效的,然后通过c=a(),这样就将b函数赋值给了全局变量c,那么调用c()的时候也就访问到了a的内部函数;
不过使用js闭包时虽然一定程度上访问了函数的内部变量,但如果访问完成后未注销掉变量会造成函数一直在内存中,影响性能,因此需要手动注销变量。