2011-01-03 24 views
4

Ist es möglich, youth Rückkehr/Stop-Ausführung von innerhalb box? Direkt, nicht so etwas wie:Abbrechen einer äußeren Funktion innerhalb einer Funktion, die sie aufruft

function youth(){ 
    var check = true; 

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

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

(wo es eine check Variable, die box Änderungen)

+0

Könnten Sie präzisieren, was Sie erreichen möchten? und echten Code zitieren? –

+3

@difitalFresh Ich habe den Titel deines Posts geändert, um deine Frage besser zusammenzufassen. Wenn ich mich geirrt habe und nicht richtig zusammenfasst, bitte modifiziere es und schlag mich auf die Fingerknöchel. – Phrogz

Antwort

8

Nein, Sie können nicht, es sei denn, Sie eine Ausnahme von der inneren Funktion werfen (aber das zählt nicht wirklich als "Rückkehr", und es ist sowieso nicht wirklich ein gutes Design-Muster).

Es ist nicht sinnvoll, einer Funktion zu erlauben, dass ihr Aufrufer einen Wert zurückgibt, da die aufrufende Funktion möglicherweise nicht im selben Kontext deklariert wird - vielleicht ist es eine andere Funktion, die ein Funktionsargument akzeptiert Die übergebene Funktion sollte das Verhalten der aufgerufenen Funktion nicht ändern können.

+0

Danke, ich wollte nur sicherstellen, dass ich keine wichtige Idee verpasse, damit mein Code so aussieht. – tcooc

+0

@digitalFresh: Der Rückgabewert der Funktion kann immer dazu verwendet werden. Zum Beispiel könnte die innere Funktion true zurückgeben, wenn sie weiter ausgeführt werden möchte; dann müßten Sie nur schreiben: if (! box()) {return; } '. – cdhowie

Verwandte Themen