jobo: "named function expression" und Rekursion

Beitrag lesen

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