Sortie anticipée de la fonction?
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?
11 réponses
Vous pouvez simplement utiliser return
.
function myfunction() {
if(a == 'stop')
return;
}
Cela enverra une valeur de retour de undefined
à tout ce qui a appelé la fonction.
var x = myfunction();
console.log( x ); // console shows undefined
Bien sûr, vous pouvez spécifier une valeur de retour différente. Quelle que soit la valeur renvoyée, elle sera consignée dans la console en utilisant l'exemple ci-dessus.
return false;
return true;
return "some string";
return 12345;
Apparemment, vous pouvez faire ceci:
function myFunction() {myFunction:{
console.log('i get executed');
break myFunction;
console.log('i do not get executed');
}}
Voir les étendues de bloc à l'aide d'une étiquette: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label
Je ne vois pas encore d'inconvénients. Mais cela ne semble pas être un usage courant.
Dérivé cette réponse: équivalent JavaScript de la matrice de PHP
Ceci:
function myfunction()
{
if (a == 'stop') // How can I stop working of function here?
{
return;
}
}
function myfunction() {
if(a == 'stop')
return false;
}
return false;
est beaucoup mieux que de simplement return;
En utilisant une approche un peu différente, vous pouvez utiliser try catch
, avec l'instruction throw.
function name() {
try {
...
//get out of here
if (a == 'stop')
throw "exit";
...
} catch (e) {
// TODO: handle exception
}
}
Si vous cherchez un script pour éviter de soumettre le formulaire lorsque certaines erreurs sont trouvées, cette méthode devrait fonctionner
function verifyData(){
if (document.MyForm.FormInput.value.length == "") {
alert("Write something!");
}
else {
document.MyForm.submit();
}
}
Changez le type de bouton Submit en "button"
<input value="Save" type="button" onClick="verifyData()">
J'espère que cette aide.
L'utilisation d'un {[1] } arrêtera la fonction et retournera undefined
, ou la valeur que vous spécifiez avec la commande return.
function myfunction(){
if(a=="stop"){
//return undefined;
return; /** Or return "Hello" or any other value */
}
}
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:
function doThis() {
var err=0
if (cond1) { alert('ret1'); err=1; }
if (cond2) { alert('ret2'); err=1; }
if (cond3) { alert('ret3'); err=1; }
if (err < 1) {
// do the rest (or have it skipped)
}
}
Espère que cela peut être utile pour n'importe qui.
Exit (); peut être utilisé pour la prochaine validation.
Si vous utilisez jquery. Cela devrait arrêter la fonction de bouillonner jusqu'à donc la fonction parent appelant cela devrait également s'arrêter.
function myfunction(e)
{
e.stopImmediatePropagation();
................
}
Tapez une commande aléatoire qui génère une erreur, par exemple:
exit
Ou
die:-)