Pendant que je lisais le livre Javascript: The Good Parts. Je ne comprends pas le morceau de soufflet de code:Questions de fermeture de Javascript
On peut généraliser ce en faisant une fonction qui nous aide à faire memoized fonctions. La fonction mémoizer prendra un tableau mémo initial et la fonction fondamentale . Il renvoie une fonction shell qui gère le mémo et appelle la fonction fondamentale selon les besoins. Nous passons la coquille fonction et les paramètres de la fonction à la fonction fondamentale:
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; };
Nous pouvons maintenant définir fibonacci avec le memoizer, fournissant la note initiale tableau et la fonction fondamentale:
var fibonacci = memoizer([0, 1], function (test, n) { return test(n - 1) + test(n - 2); });
Ma question est quelle est la fonction de test? Quand est-il défini et invoqué? Cela me semble très confus. Aussi je pense que cette déclaration: memo[n] = result;
est inutile. Veuillez corriger si j'ai tort.
Whoa. En tant que personne avec très peu de connaissances fonctionnelles en programmation, ce code m'a tout simplement ému. C'est tellement intelligent! – dmb
related: [Explication sur l'exemple "JavaScript - the Good Parts" (section 4.15)?] (Https://stackoverflow.com/questions/3798858/explanation-on-javascript-the-good-parts-example-section-4 -15) – Bergi