Javscript closure questions
- by Shuchun Yang
While I was reading the book Javascript: The Good Parts. I can not understand the piece of code bellow:
We can generalize this by making a
function that helps us make memoized
functions. The memoizer function will
take an initial memo array and the
fundamental function. It returns a
shell function that manages the memo
store and that calls the fundamental
function as needed. We pass the shell
function and the function's parameters
to the fundamental function:
var memoizer = function (memo, fundamental) {
var shell = function (n) {
var result = memo[n];
if (typeof result !== 'number') {
result = fundamental(shell, n);
memo[n] = result;
}
return result;
};
return shell;
};
We can now define fibonacci with the
memoizer, providing the initial memo
array and fundamental function:
var fibonacci = memoizer([0, 1], function (test, n) {
return test(n - 1) + test(n - 2);
});
My question is what is the test function? When does it get defined and invoked? It seems very confusing to me. Also I think this statement: memo[n] = result; is useless. Please correct if I am wrong.