Sandra S.: Function

Hallo zusammen,

kann mir jemand erklären, wie ich folgende Funktion zu verstehen habe? Bin grad dabei mir dass ganze selber anzueignen und find keine Erklärung zu dieser Funktion

function calc() {
    if(string.length > 0) {
      inp="out="+string;
      eval(inp);
    } else {
      out="0";
    }
}

diese Funktion ist in nem kleinen Taschenrechner Formular eingebaut. Sie wird bei Submit aufgerufen d. h. wenn der String (variable String) eingegeben wurde, der berechnet werden soll. Was ich absolut nicht kapier, ist was es mit der Zeile

inp="out="+string;   <<<

auf sich hat. Was hat dass "out=" zu bedeuten? Hier würde es doch dieses Out= vor dem zu berechnenden String anhängen aber warum muss ich dass machen?

Danke für eure Hilfe :o)

Gruß Sandra

  1. Moin!

    function calc() {
        if(string.length > 0) {
          inp="out="+string;
          eval(inp);
        } else {
          out="0";
        }
    }

    Was hat dass "out=" zu bedeuten? Hier würde es doch dieses Out= vor dem zu berechnenden String anhängen aber warum muss ich dass machen?

    Die spannendere Frage ist doch, was danach mit dem "inp" passiert. Und da steht: eval(inp).

    eval ist die eierlegende Wollmilchsau. Sie führt die Befehle aus, die in dem String stehen, den man übergibt.

    Folglich wird in dem String inp mindestens drinstehen: "out=IRGENDWAS", wobei IRGENDWAS die Eingabe ist, also z.B: "out=28/7".

    Wenn du out=28/7 als Befehl im normalen Javascript ausführst, ist klar, was passiert: out erhält den Wert 4. Mit eval kannst du variable Berechnungen ausrechnen lassen. Damit sparst du dir, selbst Abfragen einzubauen, die "Punktrechnung vor Strichrechnung" etc. können, damit der Rechner richtig rechnet.

    Die Kombination
          inp="out="+string;
          eval(inp);
    bedeutet also: Berechne die Formel, die in string drinsteht, und weise das Ergebnis der Variablen out zu.

    - Sven Rautenberg

  2. Hallo zusammen,

    Hi Sandra,

    inp="out="+string;   <<<

    es wird lediglich in "eval()" nicht nur der Wert von "sting" berechnet, sondern gleich der Variablen "out" zugewiesen. Sonst nix.

    Danke für eure Hilfe :o)

    Bitte ;-)

    Gruß Sandra

    Gruß
    Hans-Peter

    PS: Minuten und fünf "Nachricht absenden" Versuche später, nachdem das Forum meine Antwort nicht haben wollte:
    Jetzt habe ich es geschrieben, jetzt wird es auch abgeschickt. Obwohl der Sven - wie ich eben gesehen habe - schneller war.

    1. Moin!

      PS: Minuten und fünf "Nachricht absenden" Versuche später, nachdem das Forum meine Antwort nicht haben wollte:
      Jetzt habe ich es geschrieben, jetzt wird es auch abgeschickt. Obwohl der Sven - wie ich eben gesehen habe - schneller war.

      Tröstet es, wenn ich dir sage, daß ich die gleichen Probleme hatte? Nur nicht fünfmal abschicken - es ging nach 2 oder 3 Mal. :)