6
votes

Les fonctions nommées sont-elles sous-estimées dans JavaScript?

Prendre le framework jQuery, par exemple, si vous exécutez un code comme celui-ci:

var Foo = {
    bar: function bar() {}
}

function Foo() {}

Foo.prototype.bar = function bar() {}


0 commentaires

4 Réponses :


1
votes

Mais pour moi, les fonctions anonymes sont plus lisibles dans le code source, car je suis sûr qu'ils ne sont utilisés que là-bas.


0 commentaires

3
votes

Je suis d'accord, il y a certains réciproques à utiliser des méthodes anonymes dans JavaScript / Emcascript. Cependant, ne négligez pas comment ils doivent être utilisés. Pour de simples doublures que vous souhaitez passer à une autre fonction, elles sont souvent excellentes.


2 commentaires

Ce n'est pas comme l'utilisation de fonctions nommées doit ajouter plus de lignes, à moins que vous n'utilisez vraiment, des noms vraiment longs et d'avoir un work wrap sur.


Il n'est pas nécessaire, non, mais parfois c'est très pratique. Parfois, la fonction n'a pas vraiment besoin d'un nom. Pourquoi lui donner un?



0
votes

Les fonctions anonymes sont très pratiques. Une meilleure solution à ce problème, au lieu de nommer les fonctions, serait si Firebug vous l'a dit sur quelle ligne dans laquelle la fonction anonyme a été créée.

init()
anonymous() // application.js, line 54
anonymous() // foo.js, line 2


1 commentaires

J'ai nommé trois autres problèmes avec des fonctions anonymes et Firebug signale les numéros de ligne.



3
votes

J'ai trouvé la réponse à ma question dans ce Article très informatif . Premièrement, il s'avère que j'avais raison que des fonctions nommées sont plus souhaitables, mais la solution n'est pas aussi simple que d'ajouter des identificateurs à toutes les fonctions anonymes. La raison principale de ceci est Jscript Mettre en œuvre des expressions de fonction de manière très cassée.

Deuxièmement, il existe une distinction entre les relevés de fonction et les expressions. Une fonction anonyme n'est qu'une expression de fonction avec l'identifiant omis et l'ajout d'un identifiant (nommer) ne le ferait pas une déclaration (sauf en JScript, c'est pourquoi il est cassé). Cela signifie que toutes les autres réponses étaient hors marquage.


1 commentaires

Malheureusement, le lien vers cet article ne fonctionne plus. Cependant, le même article peut être trouvé ici: kangax.github.com/nfe