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?

323
demandé sur Kara 2010-07-25 21:16:24

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;
518
répondu user113716 2010-07-25 17:25:26

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

44
répondu CMCDragonkai 2017-05-23 12:03:04

Ceci:

function myfunction()
{
     if (a == 'stop')  // How can I stop working of function here?
     {
         return;
     }
}
16
répondu Rob 2010-07-25 17:20:09
function myfunction() {
     if(a == 'stop') 
         return false;
}

return false; est beaucoup mieux que de simplement return;

15
répondu xlaok 2018-01-31 19:35:02

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
    }
}
8
répondu Rodney Salcedo 2016-02-26 13:58:47

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.

3
répondu Awal Istirdja 2012-10-09 09:41:30

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 */
    }
}
2
répondu Seizefire 2016-05-01 03:43:03

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.

0
répondu Leo 2016-11-05 12:29:43

Exit (); peut être utilisé pour la prochaine validation.

-2
répondu Chirag Dineshbhai Ponda 2016-08-09 20:15:37

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();
       ................
  }
-4
répondu silvster27 2012-10-29 21:02:00

Tapez une commande aléatoire qui génère une erreur, par exemple:

exit

Ou

die:-)
-10
répondu amrali 2016-09-15 02:12:28