Quand dois-je conserver une fonction dans une variable?
Je suis en train d'apprendre le JavaScript pour le moment et je ne comprends pas très bien lors de l'écriture d'une fonction dans une variable.
Par exemple, les deux blocs de code à faire exactement la même chose Node.js:
var onReq = function(req, res) {
res.write('Hello');
};
http.createServer(onReq).listen(3000);
et
function onReq(req, res) {
res.write('Hello');
}
http.createServer(onReq).listen(3000);
Qui est la meilleure méthode pour ce faire conformément aux meilleures pratiques, et pourquoi?
- pour cette question, vous avez besoin de plus de concentration sur les variables de type String et integer et flottent des variables;
- stackoverflow.com/questions/1013385/...
- dupliquer: stackoverflow.com/questions/336859/...
- La seconde forme a l'avantage que si par exemple, il est terriblement long de la fonction, vous pouvez le déplacer vers le bas de la portée des variables afin de le sortir de la voie, mais l'utilisent encore plus haut. Cela peut venir dans maniable. Vous pouvez même le mettre en dessous d'un final
return
déclaration, et ça va encore travailler.
Vous devez vous connecter pour publier un commentaire.
Habituellement, je vais seulement utiliser un
var funcName = function(){}
quand j'aurais besoin de redéfinir l'action(s) pour cette fonction plus tard. Par exemple:Sinon, dans la plupart des cas (en supposant que ce n'est pas un rappel ou un modificateur) le fait de déclarer une fonction "classique" est généralement acceptable.
Je par défaut pour les non-variable
function onReq(){}
version. Ce n'est pas un soucieux de l'environnement et de la décision que j'ai fait, mais penser qu'il tire de ces arguments:onReq
va toujours se référer à que corps de fonction - une chose de moins à considérer lors de la lecture du code. Un peu comme le marquage d'une variable commefinal
en Java.Voici l'explication:
Il y a une distinction entre le nom de la fonction et la variable de la fonction est attribuée à:
https://developer.mozilla.org/en/JavaScript/Reference/Functions_and_function_scope
Selon John Resig de JavaScript comme Première Langue article, votre premier bloc de code est considérée comme une bonne pratique.
// Don't do this: function getData() { }
car il est plus facile d'enseigner à des fonctions comme un objet. Le rendant plus facile à enseigner, c'est une mauvaise raison pour commencer les débutants sur l'idée qu'il y a quelque chose de mal avec elle.Personnellement, j'ai rencontré certains problèmes avec l'appel de fonctions locales (fonctions déclarées à l'intérieur d'autres fonctions) lors de l'utilisation de la non-variable syntaxe dans certaines versions d'IE (le plus probable IE8 ou moins) tandis que la variable syntaxe ne fonctionne comme prévu.
Étant donné que les fonctions ne doivent pas être declated dans l'espace de noms global, la plupart des fonctions sont locales, et par conséquent, il est logique d'utiliser la variable syntaxe pour les fonctions de toujours.
Je vois des opinions différentes ici, mais la plupart d'entre eux sont plus basé sur ce que vous pensez est le meilleur ou pas, mais je ne vois pas de raisons techniques lors de l'utilisation de l'un ou l'autre, mais pour sûr il y a des restrictions techniques ou avantages à utiliser une déclaration d'une formule ou d'une autre. Je suis vraiment un débutant en javascript et je ne me sens pas en confiance pour les conseiller sur elle, mais je vais proposer un cas dans lequel le stockage d'une fonction dans une variable n'est pas fonctionnelle.
Dans le code ci-dessous, la définition d'un filtre Angulaire, si je définir la fonction à l'intérieur d'une variable, alors je ne peux pas appeler avec succès à partir de la méthode de filtrage. Quelqu'un pourrait-il m'expliquer la raison technique à ce sujet?
Voir le code (en commentaire ne fonctionne pas):
Vous en remercie d'avance!