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();
});
總結:
- 提供外部訪問內部的接口
- 數據保存在內存中
- 提供另一種封裝思路