js闭包听上去可能不好理解但是可以粗略的理解为:
供外部访问内部方法/变量的机制
由于js链式作用域链的存在,导致外部无法直接调用内部变量,所以如果将内部变量直接return出来,不久解决了么
直接上测试代码:
function f1(){
var i=999;
var f2=function () {
alert(i);
}
return f2;
}
$(function () {
var result= f1();
result();
});
闭包的第二个作用是:
让这些变量的值始终保持在内存中
直接上例:
function f1(){
var i=999;
var f2=function () {
alert(++i);
}
return f2;
}
$(function () {
var result= f1();
result();
result();
});
总结:
- 提供外部访问内部的接口
- 数据保存在内存中
- 提供另一种封装思路