I have requests to publish answers to my JavaScript questions. And surprisingly most requested was Fibonacci function, so here we go. My vision of this function:
function fibonacci() {
if (!("numbers" in arguments.callee)) {
arguments.callee.numbers = [0, 1];
return 0;
}
var len = arguments.callee.numbers.length;
arguments.callee.numbers.push(arguments.callee.numbers[len - 1] +
arguments.callee.numbers[len - 2]);
return arguments.callee.numbers[len - 1];
}
The most important thing is to remember that function could be anonymous.