Hallo Matthias,
var memoizer = function (memo, formula) {
var recur = function (n) {
var result = memo[n];
if (typeof result !== 'number') {
result = formula(recur, n);
memo[n] = result;
}
return result;
};
return recur;
};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) {
var recur;
recur = function (n) {
var result = memo[n];
if (typeof result !== 'number') {
result = formula(recur, n);
memo[n] = result;
}
return result;
};
return recur;
};
Geht. Das Beispiel (ohne die Zeile 2 "var recur;") stammt ja aus Crockfords Vortrag (https://forum.selfhtml.org/?t=204924&m=1388501) bzw. aus den "good parts".
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;
};
};
Geht auch. Ohne "var recur;" zu definieren. Mit diese Definition kommt: Unused variable: recur 1 'memoizer';
Ich verwende JSLint nicht. JSLint versteht JavaScript nicht hinreichend
Eine Aussage die mich verwirrt. Crockford versteht Javascript nach meiner bisherigen Auffassung hinreichender als die meisten und kann dies nach meinem Empfinden obendrein auch noch ausgezeichnet kommunizieren. Insofern folgere ich daraus, dass seinem Programm Teile dieses Verständnisses wenn nicht gar sein komplettes Verständnis inne wohnt (;-).
und 90% der Fehler und Warnungen sind für mich unbrauchbar zur Verbesserung des Codes.
Ja, da lass ich mich als Nicht-JS-Experte gerne von einem Experten wie Crocky leiten. M.E. hat er für alle diese Einwände ganz gute Begründungen. Nicht selten basierend auf eigenen (schmerzhaften) Erfahrungen mit hartnäckigen Bugs. An den 10% ist mir gelegen (;-).
Gruß
Robert aka jobo