Closer - JavaScript - 閉包
閉包Closer
- 定義
- Closer是一個採用內部函數時也可調用外層作用域變數的方法
- 具有訪問自己的、外部的、全域的變數
- 可以訪問自己及外部傳入的參數
- Closer是一個採用內部函數時也可調用外層作用域變數的方法
- 透過Curry機制的function就是Closer,目的是讓Function獲取擁有記憶,簡化各種運算
- 經典例子Fibonacci數列
const fibonacci = ()=> {
let cache = {
0: 0,
1: 1
};
const __fibonacci = (n) =>{
return typeof cache[n] === 'number'
? cache[n]
: cache[n] = __fibonacci(n - 1) + __fibonacci(n - 2);
};
}
var start = new Date();
var s = fibonacci();
var result = s(10);
var end = new Date();
console.log('fabonacci(%d) = %d, use time %dms.',
30,
result,
end.getTime() - start.getTime());
- 最少硬幣找零問題
const minCoinGive = (arr) => {
cache = new Object;
const totalMoney = (money) => {
for (let n of arr) {
let add = 0;
while (money >= n && money > 0) {
money = money - n;
cache[n] = add += 1;
}
}
return cache;
}
}
let te = minCoinGive([50, 25, 10, 5, 1]);
console.log(te(46))
- 背包問題
- 最常公共子序列
- 矩陣鏈相乘
- 圖形的全點對最短路徑
Published 21 Jun 2017