Bernd Göbel: return; Wie benutze ich es richtig

Hallo Listies,
ich habe einfach mal ein paar Fragen zu return.
Klar mit return kann ich einen Wert zurückgeben, oder aus einer Funktion
aussteigen.

var me = false;

function myReturn(){
 if (!me){ return false;
 }
 else{
 alert(me)
 }
}

Oder schreibe ich besser return 0; (Ist doch das gleiche wie false ?)
Oder schreibe ich besser return (-1);

Nur mit einen return; ??? (Da mit habe schonmal schlechte erfahrungen gemacht)

Würde ich klasse finden wenn mir das jemand mal erklären könnte.

Danke Bernd

PS: Ich benutze entweder return false; oder return (-1);

  1. Moin!

    var me = false;
    function myReturn(){
    if (!me){ return false;
    }
    else{
    alert(me)
    }
    }

    Oder schreibe ich besser return 0; (Ist doch das gleiche wie false ?)
    Oder schreibe ich besser return (-1);

    0 ist logisch false, das stimmt, aber -1 ist logisch true. Alles was ungleich 0 ist, ist true (ausser ein paar speziellen Dingen wie null oder undefined).

    Nur mit einen return; ??? (Da mit habe schonmal schlechte erfahrungen gemacht)

    Es kommt darauf an, ob Deine Funktion einen Wert zurueckgeben soll oder nicht. Es gibt Funktionen wie
      function produkt(x0, x1) {
        return x0 * x1;
      }
    die geben ein Ergebnis zurueck, eine Antwort. Und es gibt solche, die ruft man einfach auf, die teilen einem aber nichts mit (in Pascal nennt man das Prozedur im Gegensatz zu Funktion):
      function tuWas(arg0, arg1) {
        // some stuff including returns without a parameter
      }
    Dort kannst Du return ohne Parameter einsetzen, um die Funktion vorzeitig zu verlassen, wenn das Deine Kontrollstrukturen vereinfacht.

    Nun koenntest Du aber in ein und derselben Funktion mehrere returns unterbringen, mal mit und mal ohne Parameter. Das kannst Du zwar schreiben, aber es ergibt keinen Sinn. Entweder Du willst eine Antwort geben oder nicht, entscheiden musst Du Dich schon. Wenn der Interpreter das sieht, dann wird er annehmen, Du willst eigentlich einen Wert zurueckgeben, hast bei einem return-Statement aber vergessen, diesen hinzuschrieben. Genau dann bekommst Du eine Fehlermeldung. Dasselbe passiert, wenn Du irgendwo einen Wert mit return zurueckgibst, aber das Ende der Funktion auch anders erreicht werden kann und dort am Ende kein Rueckgabewert definiert wird ("Not all control paths return a value" oder so aehnlich). Das trifft auf Dein obiges Beispiel zu.

    Beachte: Wenn Du keinen Wert zurueckgeben willst, dann kommt natuerlich auch keiner beim Aufrufer an. Wenn Du das Ergebnis so einer Funktion abfragst, gibt's Probleme.

    PS: Ich benutze entweder return false; oder return (-1);

    Die Frage ist, wofuer benutzt Du das?

    So long