Est-ce que chaque fonction Javascript retourner une valeur?
J'utilise Netbeans pour ajouter des professionnel-les commentaires, pour chaque fonction, j'écris. J'ai donc commencer à chacune d'elle avec /**
et puis je presse Enter
laisser Netbeans s'acquitter de commentaire par défaut schéma pour la fonction suivante.
Jusqu'à maintenant, j'ai été en utilisant ce seulement pour le langage PHP, et dans ce cas Netbeans a toujours été l'ajout de @returns {type}
partie en commentaire régime seulement, si la suite de fonctions PHP inclus return
déclaration. Sur ce qu'on appelle les "procédures" (fonctions qui ne retournent aucune valeur) cette partie est manquante.
Aujourd'hui, j'ai essayé la même chose pour la fonction Javascript et Netbeans ajouté @returns {undefined}
partie de commenter régime, même si la suite de la fonction ne retourne rien.
Ce qui me confond. Ne Netbeans suggère cette façon, que chaque fonction Javascript doit retourner quelque chose? Que dois-je faire? Ignorer (ou suppression) commentaire de schéma d'une partie ou de suivre la suggestion (si c'est une suggestion à tous) et ajouter return false;
à la fin de cette fonction, si elle est inutile pour moi?
- Si aucune valeur de retour est spécifié, JavaScript sera de retour
undefined
. Dans de nombreuses langues, le résultat de la dernière instruction est retourné (plus utile, de l'OMI). Ceux-ci sont appelés rendement implicite.
Vous devez vous connecter pour publier un commentaire.
La réponse courte est non.
La réel la réponse est oui: la JS moteur doit être averti que la fonction a terminé ses affaires, ce qui est fait par la fonction renvoyer quelque chose. C'est aussi pourquoi, au lieu de "fini", une fonction est dite à "ont retourné".
Une fonction qui n'a pas de retour explicite retournera
undefined
, comme un C(++) fonction qui n'a pas de valeur de retour est dit (et sa signature reflète ce) pour revenirvoid
:Aussi, en JS, comme dans la plupart de chaque langue, vous êtes libre de tout simplement ignorer la valeur de retour d'une fonction, qui est en fait un sort terrible:
À certains très faible niveau, le retour est traduit dans une sorte de saut. Si une fonction vraiment retourné rien à tous, il n'y aurait pas moyen de savoir quoi et quand faire appel à la fonction suivante, ou à l'appel des gestionnaires d'événements et la comme.
Donc pour résumer: Non, une fonction JS n'avez pas besoin renvoyer rien d'aussi loin que votre code va. Mais aussi loin que la JS moteurs sont concernés: une fonction toujours retourne quelque chose, que ce soit explicitement par l'intermédiaire d'un
return
déclaration, ou implicitement. Si une fonction renvoie implicitement, sa valeur de retour sera toujours pas défini.void
, il ne retourne rien, mais sa signature, ce que reflète à travers lavoid
type de retour.return;
est probablement utile seulement si vous avez besoin de revenir plus tôt. écritreturn undefined;
peut produire des résultats différents siundefined
résout à une valeur différente. La plupart (si pas tous) des navigateurs lèvera une erreur lorsque vous tentez de les réaffecter pas défini, mais en théorie, il est possible de voici un exemple d'utilisation node.jsreturn
ou explicitereturn undefined;
ne change pasreturn
déclaration, la fonction implicitement retourundefined
, de sorte que même sans retour de déclarations, de la carte de rappel sera de retourundefined
...void
est le même queundefined
en JS, mais avant ES5 vous pourrait (théoriquement) remplacerundefined
, voir developer.mozilla.org/de/docs/Web/JavaScript/Reference/...void
dans d'autres langues (comme le C), où vous pouvez avoir des fonctions commevoid do_someting(int *arg)
, mais vous ne pouvez pas avoir une variable de typevoid
. En C,void
n'est pas vraiment un type, de sorte que ces fonctions ne font pas retour n'importe quoi, ils ont juste sautNon, retour n'est pas nécessaire.
Mais pas retour fait retour à la
undefined
Non, ils ne le font pas. C'est vrai qu'au plus profond de la spécification, ce sont tous des légèrement différents:
...mais le résultat de appel chacun d'entre eux est le même:
undefined
. De manière pragmatique:return
, vous pouvez simplement laisser exécution de code "tomber de la fin" de la fonctionundefined
, plus précisément, vous un juste écrirereturn;
return;
, ou terminé avecreturn undefined;
; ils sont tous exactement le même aspect à votre code d'appelRe spec: en particulier, lorsque l'exécution d'une fonction tombe de la fin, dans la spec, c'est "normal" de la fin; mais
return;
etreturn value;
sont à la fois "retour" complétion avec une valeur associée (undefined
), qui est (très légèrement) différentes. Mais la différence est éliminé par la sémantique de l'appel d'une fonction, qui disent:Donc il n'y a aucune différence, vous pouvez observer dans le code.
Non, vous n'avez pas à revenir à quelque chose pour chaque fonction. Il est facultatif et à la façon dont vous écrivez votre code logique.