Hallo,
Besser mit einer Named Function Expression:
return function recur () {
...
formula(recur, n);
...
};Keine Ahnung, ob JSLint das erlaubt, das ist jedenfalls die saubere Variante, wenn man innerhalb einer Funktion auf sie selbst zugreifen will, außerhalb aber nicht.
var memoizer = function (memo, formula) {
return function recur(n) {
var result = memo[n];
if (typeof result !== 'number') {
result = formula(recur, n);
memo[n] = result;
}
return result;
};
};
>
In der jslint\_com@yahoogroups.com bekam ich noch den Hinweis dazu:
That would be using the language as designed:
ECMA-262 [3rd and 5th editions]: The \*Identifier \*in a \*FunctionExpression \*can
be referenced from inside the \*FunctionExpression's FunctionBody \*to allow
the function to call itself recursively. However, unlike in a \*
FunctionDeclaration\*, the \*Identifier \*in a \*FunctionExpression \*cannot be
referenced from and does not affect the scope enclosing the \*
FunctionExpression\*.
Gruß
jobo