Struppi: JSLint: Consider Closures

Beitrag lesen

var initColPanelUl = function()
  {
   for (var i = 0; i < colPanelUl.childNodes.length; i++)
   {
     // Recognize the following if-case. We have to distinguish
     // between possible white-space and the li-elements of the list.
     var li = colPanelUl.childNodes[i];
     if (li.nodeName.toLowerCase() == "li")

Wieso nutzt du hier nicht colPanelUl.getElementsByTagName('li')? Dann sparst du dir diese abfrage.

{
       event.on(li.id, "mousemove", function(ev) { interactFilterPanelEv(this.id, "mousemove"); });

Bist du sicher, dass du hier die id übergeben musst? Warum nicht direkt das Objekt? Die id ist in den seltesten Fällen interessant, das Objekt aber fast immer (zumal du in der Funktion den umgekehrten weg gehen kannst).

Nun meckert JSLint viermal wie folgt, was ich ja auch nachvollziehen kann, aber mir fehlt gerade die Idee zu einer einfacheren, sauberen Lösung:

Be careful when making functions within a loop. Consider putting the function in a closure.

Meckern halte ich hier für das falsche Wort, es ist lediglich eine Warnung, die du in deinem Fall nicht beachten braucht.

Struppi.