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