function a(){
alert('A');
a = function(){
alert('B');
};
}
function a(){
alert('A');
return function(){
alert('B');
};
}
Cette fonction se réécrit après avoir été appelée pour la première fois, évitant ainsi une répétition inutile des opérations à chaque appel. Comment comprendre cela concrètement ? Le thread d'exécution de la fonction n'est-il pas le même avant et après la réécriture de la fonction ?
Par exemple, différents navigateurs ont des noms d'API différents, et si vous souhaitez encapsuler une interface unifiée, votre code ressemblera à ceci
Différencie un état booléen sans utiliser de variables supplémentaires et sans utiliser if-else.
Par exemple, certains comportements ont une logique différente dans des situations initialisées et non initialisées, alors vous pouvez écrire comme ceci :
Le problème ici est qu'une variable globale est introduite. Ensuite, cette variable peut être encapsulée dans un état interne, qui peut s'écrire comme ceci :
Si vous utilisez la méthode mentionnée par la personne qui a posé la question :
De plus, cette façon d’écrire semble très fonctionnelle (je ne connais pas grand-chose aux expressions fonctionnelles, donc je n’ose pas être absolu). Voici donc le problème du paradigme de programmation.
Ressentez les trois manières différentes d'écrire suivantes :
Orienté processus :
Orienté objet :
Expression fonctionnelle :
La méthode fonctionnelle présente de nombreux avantages. Pour cela, vous devez comprendre la programmation fonctionnelle.
L'exemple d'API du navigateur ci-dessus est un bon exemple. De manière générale, la réécriture de fonctions consiste davantage à éviter certaines opérations inutiles afin d'optimiser les performances du code.
En termes simples
La première fois que vous exécutez une fonction, alert('A') est exécutée, et la deuxième fois qu'elle est exécutée, alert('B').
Il ne s'agit pas tant d'éviter de répéter des opérations inutiles que d'effectuer des opérations supplémentaires. Lorsqu’il est exécuté pour la première fois, il effectue l’opération A, et lorsqu’il s’exécute plus tard, il effectue l’opération B.