2011-01-03 3 views
4

Est-il possible de faire youth exécuter/arrêter l'exécution à partir de box? Directement, pas quelque chose comme:Annulation d'une fonction externe à partir d'une fonction qu'elle appelle

function youth(){ 
    var check = true; 

    function box(){ 
    //code 
    check = false; 
    } 

    //code 
    while(check){ 
    //code; 
    } 
    return false;  
} 

(où il y a une variable check qui box changements)

+0

pourriez-vous préciser ce que vous essayez d'atteindre? et citez le code réel? –

+3

@difitalFresh J'ai modifié le titre de votre message dans le but de mieux résumer votre question. Si j'ai commis une erreur et que je n'ai pas résumé correctement, modifiez-le et écrase-moi sur les doigts. – Phrogz

Répondre

8

Non, vous ne pouvez pas, à moins que vous jetez une exception à la fonction interne (mais qui ne compte pas vraiment comme "revenant", et ce n'est pas vraiment un bon motif de conception de toute façon).

Cela n'a pas de sens d'autoriser une fonction à renvoyer une valeur à son appelant, car la fonction appelante peut ne pas être déclarée dans le même contexte - peut-être une autre fonction qui accepte un argument de fonction. La fonction transmise ne devrait pas pouvoir modifier le comportement de la fonction appelée.

+0

Merci, je voulais juste m'assurer que je ne manquais pas une idée importante pour que mon code ressemble à ça. – tcooc

+0

@digitalFresh: La valeur de retour de la fonction peut toujours être utilisée pour accomplir ceci. Par exemple, la fonction interne peut renvoyer true si elle veut continuer à s'exécuter; alors vous auriez juste à écrire 'if (! box()) {return; } '. – cdhowie

Questions connexes