Torben: JavaScript return wert notwendig?

Guten Abend,

bei folgender Funktion:

function go2index()
{
 return document.location.href='/index.php';
}

ist da ein return wert notwendig? Oder reicht es wenn man es so schreibt:

function go2index()
{
 document.location.href='/index.php';
}

--
mfg torben
  1. hi,

    bei folgender Funktion:
    function go2index()
    {
    return document.location.href='/index.php';
    }
    ist da ein return wert notwendig?

    Nein.

    Oder reicht es wenn man es so schreibt:

    function go2index()
    {
    document.location.href='/index.php';

    Du solltest window.location verwenden.
    Die meisten aktuellen Browser stellen zwar unter document.location eine "Kopie" dieses Objektes zur Verfügung - aber die verhält sich etwas anders, als das "Original".

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Die Funktion soll dafür sorgen, dass ein anderes eine andere Funktion abbricht wenn ein bestimmtes Ereignis zutrifft. Da die Funktion, die die Funktion go2index(); aufruft, abbrechen soll, denke ich, dass es so am sinnvollsten ist:

      Funktion.1()
      {
       if(ereignis == true)
              {
        return go2index();
              }
       else
       {
        [...]
              }

      [...]
      }

      function go2index()
      {
       return window.location.href='/index.php';
      }

      --
      lg Torben
      1. Moin

        kommt diese Funktion überhaupt noch dazu, einen Rückgabewert zu liefern?

        function go2index()
        {
        return window.location.href='/index.php';
        }

        Das ist doch so, als ob der Selbstmörder noch einen Erfolgsbericht seiner Aktivitäten liefern soll.

        Gruß
        rfb

        --
        Man kann einen Menschen nichts lehren, man kann ihm nur helfen, es selbst zu entdecken.
        (Galileo Galilei)
        1. So wie ich das sehe, sendet die funktion go2index den rückgabewert "window.location.href='/index.php';" an die funktion "Funktion.1" und diese wiederrum an den Link in der .php datei...

          Da ich mir selber nicht sicher bin, habe ich das ganze hier ins Forum gepostet...

          --
          lg Torben
          1. hi,

            So wie ich das sehe, sendet die funktion go2index den rückgabewert "window.location.href='/index.php';" an die funktion "Funktion.1"

            Nein, nur auf Grund einer in ihr vorgenommenen Zuweisung gibt eine Funktion nichts zurück.
            Eine Funktion gibt genau dann etwas zurück, wenn du dies innerhalb von ihr mittels return angewiesen hast.

            Der implizite Return-Wert von Funktionen, die kein return xyz benutzen, müsste null sein.

            und diese wiederrum an den Link in der .php datei...

            Ob der Browser nach dem location-Wechsel das Jvascript überhaupt noch weiter ausführt, darf schon bezweifelt werden. Wenn du auf Nummer Sicher gehen willst, dann kannst du aber false zurückgeben, damit die Default-Action des aufrufenden Links unterbunden wird.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            1. Hi wahsaga,

              aber ich sende doch quasi mit:

              return window.location.href='/index.php';

              in der go2index() den Rückgabewert 'window.location.href='/index.php';' an die Funktion.1 - die wiederum ein 'return go2index();' beinhaltet.

              Das müsste dann doch der Rückgabewert sein oder?

              Und abbrechen müsste das Script doch dann automatisch, wegen dem 'return', oder?

              Wie das ganze bei mir aussieht, hab ich hier geschildert:

              http://forum.de.selfhtml.org/?t=153719&m=1000327

              Wie würdest du mein vorhaben gestalten?

              --
              Mit freundlichen Grüßen Torben
              1. hi,

                aber ich sende doch quasi mit:

                return window.location.href='/index.php';

                in der go2index() den Rückgabewert 'window.location.href='/index.php';' an die Funktion.1 - die wiederum ein 'return go2index();' beinhaltet.

                Das müsste dann doch der Rückgabewert sein oder?

                Ja.

                Und abbrechen müsste das Script doch dann automatisch, wegen dem 'return', oder?

                Eine Funktion wird an der Stelle, wo du return verwendest, verlassen.

                Wenn du diesen Rückgabewert allerdings weiter hochreichen wolltest, um damit dann die Ausführung der Default-Action eines Links zu unterbinden, dürfte das schiefgehen: Der Wahrheitswert eines Zuweisungsausdrucks entspricht dem Wahrheitswert des zugewiesenen Wertes, und '/index.php' in einen Boole'schen Wert "gecasted" ergibt true.

                gruß,
                wahsaga

                --
                /voodoo.css:
                #GeorgeWBush { position:absolute; bottom:-6ft; }
                1. Das einzige was dann also passieren kann ist, dass die Seite kurz bevor der Link "window.location.href='/index.php'" startet nach oben scrollt, oder?

                  Da mein Funktionsaufruf aber so aussieht:

                  <a href=“#“ onclick="funktion(bla); return false;">bla</a>

                  sollte das kein Problem sein, oder?

                  --
                  lg Torben
  2. Manchmal ist er zumindest sinnvoll.
    Wenn deine Funktion false zurückgibt kannst du, wenn deine Funktion in einem Link untergebracht ist mit

    <a onclick="return go2index();" href="...">

    Eine nicht-JavaScript Alternative unterdrücken.
    Grüße!

  3. Hallo,

    bei folgender Funktion:
    ...
    ist da ein return wert notwendig?

    das ist nicht von der Funktion selbst abhängig, sondern vom Kontext.

    Frage dich nach der Logik: Erwartet die übergeordnete Funktion ein Ergebnis? Ist es erforderlich, dass ein Ergebnis an die aufrufende Funktion geliefert wird? Wenn ja, mach das. Wenn es aber reicht, dass die Funktion ihre Aufgabe erledigt, ohne an den "Aufrufer" etwas zurückzumelden, kann man auf ein return auch verzichten.

    Ciao,
     Martin

    --
    Der Bäcker schlägt die Fliegen tot
    Und macht daraus Rosinenbrot.