Les fonctions anonymes sont-elles mauvaises en JavaScript?

Je lisais que l'utilisation de fonctions anonymes dans javascript est une mauvaise pratique, car cela peut faire un problème de débauchage, mais je n'ai pas vu cela pour moi-même. Les fonctions anonymes en JavaScript sont-elles vraiment mauvaises et, dans l'affirmative, pourquoi?

Non, les fonctions anonymes sont utilisées partout dans JavaScript sur le Web. Cela peut rendre le débogage un peu plus difficile dans les endroits, mais pas assez pour dire qu'ils ne devraient pas être utilisés.

Par exemple, JQuery en fait un usage étendu.

Il existe de nombreuses fois que vous souhaitez les utiliser sur des fonctions formellement déclarées, par exemple lorsque vous souhaitez limiter leur portée.

Je dirais le contraire, lambdas (alias) rendent certaines expressions beaucoup plus succinctes. Si vous attachez plusieurs gestionnaires d'événements à plusieurs événements, il serait fastidieux de donner un nom de fonction à chaque gestionnaire d'événements, par exemple.

Il est plus utile et plus conservé dans le temps, même s'il rend le débogage un peu plus difficile, mais je lutte rarement avec le débogage car une fonction est anonyme. Et vous devriez utiliser JSLint pour faciliter votre vie lors du codage.

Très certainement pas, les fonctions lambda sont utilisées partout , presque omniprésentes.

Je vais aller contre le flux un peu ici et faire valoir que les fonctions anonymes sont en effet mauvaises pratiques même si elles sont largement utilisées.

1) Les fonctions anonymes ne peuvent pas être réutilisées.

2) Les fonctions anonymes, par définition, n'ont pas de nom et ne décrivent pas ce qu'elles font. C'est-à-dire que le code n'est pas auto-documenté.

3) Les fonctions anonymes ne peuvent être testées isolément avec un cadre de test unitaire.

4) Je pense personnellement qu'ils rendent le code plus difficile à lire et à déboguer. Bien que votre expérience puisse varier.

Je pense qu'il existe des situations où une fonction anonyme est le meilleur choix et, en règle générale, afin d'éviter les inconvénients ci-dessus, je nomme presque toujours mes fonctions.

Tout simplement parce que tout le monde les utilise ne les rendent pas bonnes (tout le monde se souvient de l'utilisation de l'élément table pour la mise en page?). Mais, ils sont géniaux parce qu'ils peuvent aider à clarifier et à simplifier votre code, ce qui donne moins d'opportunité pour que quelque chose se passe mal.

Mais, les fonctions anonymes ne devraient pas être si compliquées que le débogage devient difficile avec eux. Dans ce cas, il vaut mieux faire une nouvelle fonction.

Voici ma console du navigateur:

 // Bad poopy = function(){} // function (){} groupy = poopy; // function (){} // Good droopy = function loopy(){}; // function loopy(){} floupy = droopy; // function loopy(){} 

Imaginez que vous déboguez quelque chose et que vous avez un nom de fonction appelé groupy . Vous tapez le nom pour obtenir plus d'informations à ce sujet. Si cette fonction a été définie comme dans la mauvaise section, vous n'avez aucune idée de la déclaration originale. Si toutefois, vous définissez votre nom de fonction, comme dans la section Bon, vous aurez toujours une trace du nom de la fonction d'origine.

Les expressions de fonctions anonymes sont les meilleures pratiques en JavaScript.