molily: window.settimeout() mit Funktionsaufruf funktioniert nur im FF

Beitrag lesen

Dasselbe kann (und sollte) man mit einer Funktion schreiben:

window.setTimeout(function () { teste_x(Zaehler); }, 30);

In manchen Browsern geht auch

setTimeout(teste_x, 30, Zaehler);

Dies wird in HTML5 standardisiert, aber IE macht das nicht, dort bedeutet der 3. Parameter bereits etwas anders.

Aus funktionaler Sicht angebrachter wäre Currying:

setTimeout(teste_x.curry(Zaehler), 30);

Das erzeugt eine neue Funktion, die teste_x mit dem Parameter Zaehler aufruft.

Function.prototype.curry bieten Frameworks wie Prototype an, viele Browser implementieren aber bereits das standardisierte Function.prototype.bind:

setTimeout(teste_x.bind(null, Zaehler), 30);

Das legt intern einen Wrapper an, eine Pseudo-Funktion, die Aufrufe an teste_x delegiert.

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/bind

Mathias