Der Martin: problem

Beitrag lesen

n'Abend,

Wann bringt es Vorteile, Funktionen so zu schreiben?
Wenn man globale Variablen um jeden Preis vermeiden möchte, etwa weil sie mit anderen Scripten kollidieren könnten.
Werden Variablen, die ich in einer Funktion speichere, Global?

ja, wenn sie ohne das Schlüsselwort "var" erzeugt werden. Sonst nicht.

// bsp. 1

$(function() {
  $("#ul1 > li").click(function(li) {
    var url = $(li).find("a").attr("href");
    document.window.location.href = url;
  });
});

// bsp. 2
function checkclick() {
  $("#ul1 > li").click(function(li) {
    var url = $(li).find("a").attr("href");
    document.window.location.href = url;
  });
}


>   
> Ist „url“ im 2. Bsp. Global, wenn ich es so schreibe? Ich ging davon aus, dass Variablen Global werden, wenn ich das „var“ vor dem Variablennamen weglasse?  
  
Du liegst richtig, url ist in beiden Beispielen global. Aber der Unterschied ist, dass der Code der anonymen Funktion in Beispiel 1 \*sofort\* ausgeführt wird, der in Beispiel 2 erst, wenn die Funktion ausdrücklich aufgerufen wird. Du müsstest also eigentlich dein Beispiel 1 mit einer Variante \*ohne\* Kapselung in einer Funktion vergleichen.  
  
~~~javascript
// Code-Block 1  
(function()  
 { var x1 = 42;  
   // ...  
   // irgendwelcher Code  
 }) ();  
  
// Code-Block 2  
var x2 = 24;  
// ...  
// irgendwelcher Code

Sowohl Block 1 als auch Block 2 werden sofort ausgeführt, wenn das Dokument bzw. das Script geparst wird. Aber x1 ist lokal in einer Funktion gekapselt, also global nicht sichtbar. Dagegen liegt x2 im globalen Scope (es ist automatisch eine Eigenschaft des window-Objekts), weil es nicht gekapselt ist.

Müsste ich, wenn ich bspw. Klicks mit Anonymen Funktionen überwache, noch auf „Document Ready“ warten, wenn meine Scripte eh am ende von body stehen?

Nein. Wenn du sie aber im head-Element notierst, oder relativ weit "oben" im body, dann schon. Wichtig ist, dass das Element, dessen Ereignisse du überwachen willst, zu dem Zeitpunkt schon existiert.

So long,
 Martin

--
Chef:         Zum vierten Mal in dieser Woche erwische ich Sie nun schon beim Zuspätkommen. Was haben Sie dazu zu sagen?
Angestellter: Dann muss heute Donnerstag sein.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
0 49

problem

Nightloewe
  • javascript
  1. 0
    Klawischnigg
    1. 0
      Jeena Paradies
  2. 0
    Jeena Paradies
    1. 0
      Malcolm Beck´s
      1. 0
        Der Martin
        1. 0
          Malcolm Beck´s
          1. 0
            Der Martin
            1. 0
              Malcolm Beck´s
              1. 0
                Der Martin
                1. 0
                  Malcolm Beck´s
                  1. 0
                    Der Martin
                    1. 0
                      Malcolm Beck´s
        2. 0
          molily
      2. 7
        1UnitedPower
        1. 0

          Korrektur am Codebeispiel

          1UnitedPower
        2. 0
          Malcolm Beck´s
          1. 0
            1UnitedPower
            1. 0
              Malcolm Beck´s
              1. 0
                1UnitedPower
                1. 0

                  JQuery, Funktionen und Anonyme Funktionen

                  Malcolm Beck´s
                  1. 0
                    1UnitedPower
                    1. 0
                      Malcolm Beck´s
                      1. 0
                        1UnitedPower
                        1. 0
                          Malcolm Beck´s
                    2. 0
                      Der Martin
                      1. 0
                        1UnitedPower
                      2. 0
                        Malcolm Beck´s
                        1. 0
                          Der Martin
                          1. 0
                            Malcolm Beck´s
        3. 0
          molily
        4. 3
          molily
          1. 0
            1UnitedPower
      3. 0
        Klawischnigg
      4. 0

        Gibt es Benchmark-Tools für Seiten mit Javascript?

        Malcolm Beck´s
  3. 0
    MudGuard
  4. 0
    Nightloewe
  5. 1

    Sinnvoller Titel, Problembeschreibung

    Der Martin
    • zu diesem forum
    1. 0
      Gunnar Bittersmann
      1. 0
        Der Martin
        1. 0
          Gunnar Bittersmann
          1. 0
            misterunknown
            1. 0
              Gunnar Bittersmann
              1. 0
                misterunknown
                1. 0
                  Gunnar Bittersmann
                  1. 0
                    Matthias Apsel
                    1. 0
                      Gunnar Bittersmann
                  2. 0
                    misterunknown
                    1. 0
                      Gunnar Bittersmann