J'ai une fonction:
function myfunction() {
if (a == 'stop') // How can I stop the function here?
}
Y a-t-il quelque chose comme exit()
en JavaScript?
javascript
Simon
la source
la source
for
boucle. Même alors, je n'ai aucune idée de la raison pour laquelle la méthode suggérée serait utilisée, alors que vous pourriez simplement appelerbreak;
. Pour utiliser l'exemple de l'article: L'if(i==5) break;
utilisationreturn
interrompra l'exécution de la fonction, que vous soyez ou non dans unefor
boucle.return
arrêtera l'exécution de la fonction, ce qui semble être ce que vous avez demandé.Réponses:
Vous pouvez simplement utiliser
return
.Cela enverra une valeur de retour de
undefined
ce qui a appelé la fonction.Bien sûr, vous pouvez spécifier une valeur de retour différente. Quelle que soit la valeur retournée, elle sera enregistrée dans la console à l'aide de l'exemple ci-dessus.
la source
undefined
, et c'est ce que fournit ma solution principale. L'articlereturn false
auquel vous avez fait référence parle de faire dans un gestionnaire d'événements jQuery. C'est une question entièrement différente. C'est la bonne façon de quitter une fonction JavaScript. Évidemment, si l'appelant s'appuie sur la valeur renvoyée, la valeur doit être définie de manière appropriée.if(a != 'stop') { /* run my code */ }
que le code ne s'exécute que lorsquea
n'est pas égal'stop'
sans fournir d'explicitereturn
. Mais la valeur de retour est identique à ma solution . Dans les deux cas,undefined
sera retourné.undefined
(ou s'il ne reçoit pas une autre valeur) comme valeur de retour, alors vous devrez vous conformer aux spécifications de cette API et renvoyer la valeur correcte. Généralement, pour un système de gestion d'événements, il attendraundefined
comme une simple indication que le gestionnaire a terminé, et il n'y a pas d'autres instructions. Avec jQuery,return false;
a une signification particulière donnant l'instruction de faire unpreventDefault
etstopPropagation
.Apparemment, vous pouvez le faire:
Voir les étendues de bloc grâce à l'utilisation d'une étiquette: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label
Je ne vois encore aucun inconvénient. Mais cela ne semble pas être une utilisation courante.
Dérivé de cette réponse: équivalent JavaScript du dé de PHP
la source
return false;
est bien mieux que justereturn;
la source
false
mieux? Je dirais que la valeur par défautundefined
est meilleure dans le cas générique. Quoi qu'il en soit, vous avez raison de dire qu'il est souvent préférable de renvoyer une valeur significative.false
queundefined
.Cette:
la source
En utilisant une approche légèrement différente, vous pouvez utiliser
try catch
, avec une instruction throw.la source
si vous recherchez un script pour éviter de soumettre un formulaire lorsque des erreurs sont détectées, cette méthode devrait fonctionner
changer le type de bouton Soumettre en "bouton"
j'espère que cette aide.
la source
L'utilisation d'un
return
arrêtera la fonction et retourneraundefined
, ou la valeur que vous spécifiez avec la commande de retour.la source
Je n'aime pas répondre à des choses qui ne sont pas une vraie solution ...
... mais quand j'ai rencontré ce même problème, j'ai fait ci-dessous une solution de contournement:
J'espère que cela peut être utile à n'importe qui.
la source
Je pense que jeter une nouvelle erreur est une bonne approche pour arrêter l'exécution plutôt que de simplement retourner ou retourner false. Par exemple. Je valide un certain nombre de fichiers que je n'autorise que cinq fichiers maximum à télécharger dans une fonction distincte.
Mais j'appelle cette fonction de la fonction de flux principale comme
Dans l'exemple ci-dessus, je ne peux pas arrêter l'exécution à moins que je ne lance une nouvelle erreur.
la source
sortie(); peut être utilisé pour passer à la prochaine validation.
la source
Si vous utilisez jquery. Cela devrait empêcher la fonction de se propager jusqu'à ce que la fonction parent qui l'appelle devrait également s'arrêter.
la source
stopImmediatePropagation()
n'est pas une chose jQuery, et arrêter la propagation n'est pas la même chose que quitter une fonction.tapez n'importe quelle commande aléatoire qui génère une erreur, par exemple:
ou
la source