閉包
內部函數比外部函數擁有更長的生命期.
應用
記憶功能
— 計算斐波那契數列 1 1 2 3 5 8 13…..
var memoizer = function(memo,formula){
var recur = function(n){
var result = memo[n];
if( typeof result !== 'number') // 未計算過
{
result = formula(n,recur);
memo[n] = result; // 將計算過的保留結果
}
return result;
}
return recur;
}
var formula = function(n,recur){
return recur(n-1) + recur(n-2);
}
var feibo = new memoizer([1,1],formula);
feibo(11);