Christian Kruse: Autovervollständigung

Beitrag lesen

Hallo Robert,

schade, ich verstehe die Syntax einfach nicht. Wieso steht das (the_element) hinten dran?

Ok, sorry. Ich dachte, die Syntax an sich wäre klar.

(function(element) {

Hiermit erstelle ich eine anonyme Funktion, die den Parameter element erwartet. Die Klammer am Anfang ist dazu da dem JS-Interpreter zu sagen, dass der Ausdruck innerhalb dieser Klammern zusammen gehört, sprich

(function(element) {
});

ist nur zur Gruppierung der Funktion da. Das darauf folgende (the_element) ist der Operator, um eine Funktion auszuführen.

(function(element) {
})(the_element);

Dies ruft also die Funktion, die in den Klammern erstellt wird, auf und übergibt eine Variable the_element als Argument. Das ist in JS ein häufig genutztes Konstrukt, um Code-Teile zu schachteln: effektiv erstelle ich so einen neuen Namensraum. Alle lokalen Variablen in dieser Funktion sind nur innerhalb der Funktion und den dort erstellten Closures verfügbar.

(function(element) {
  var tm = null;
  var autocomplete = function() {
    // …
  };

  element.addEventListener('input', function() {
    if(tm) {
      window.clearTimeout(tm);
    }

    tm = window.setTimeout(autocomplete, 500);
  });
})(the_element);

Sowohl die Variable tm als auch autocomplete ist also von außen nicht verfügbar. So leaken Variablen nicht in fremde Namespaces.

Wenn du noch Fragen hast: frag!

LG,
CK

0 49

Autovervollständigung

hmm
  • datenbank
  • html
  • javascript
  1. 0
    dedlfix
  2. 2
    Christian Kruse
    1. 0
      Robert R.
      • javascript
      1. 0
        Christian Kruse
        1. 0
          Robert R.
          1. 2
            Christian Kruse
            1. 0
              Robert R.
              1. 0
                Christian Kruse
            2. 0
              dedlfix
            3. 0
              Matthias Apsel
              1. 0
                Christian Kruse
                1. 0
                  Matthias Apsel
                  1. 0
                    RR
                    • javascript
                    • selfhtml-wiki
                    1. 0
                      dedlfix
                    2. 0
                      Christian Kruse
                      1. 0
                        RR
                        1. 0
                          Christian Kruse
                          1. 0
                            RR
                            1. 0
                              Christian Kruse
                              1. 0
                                RR
                                1. 0
                                  Christian Kruse
                                  1. 2
                                    Rolf b
                                    1. 1
                                      Christian Kruse
                                      1. 0
                                        Matthias Apsel
                                      2. 0
                                        Rolf b
                                        1. 0
                                          Christian Kruse
                                          1. 0
                                            Rolf b
                                            1. 0
                                              Christian Kruse
                                              1. 0
                                                JürgenB
                                                1. 0
                                                  Christian Kruse
                                                  1. 0
                                                    JürgenB
                                                    1. 0
                                                      Gunnar Bittersmann
                                                      • mobile
                                                      1. 0
                                                        Christian Kruse
                                                        1. 0
                                                          JürgenB
                                                      2. 0
                                                        Rolf b
                                                        1. 0
                                                          Christian Kruse
                                                          • humor
                                                          • menschelei
                                                          1. 0
                                                            Rolf b
                                                            • humor
                                                            • menschelei
                                                            • sport
                                                            1. 0
                                                              JürgenB
                                                              1. 0
                                                                Gunnar Bittersmann
                                                                1. 0
                                                                  JürgenB
                                                            2. 0
                                                              Christian Kruse
  3. 0
    Martl
    1. 0
      Camping_RIDER
      1. 0
        Martl
  4. 0
    Gunnar Bittersmann
    1. 0
      hmm
    2. 0
      Camping_RIDER
  5. 0
    hmm