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