Hallo Mathias,
<script type="text/javascript">
var foo='test';
function overwrite(fn) { // Der Aufrufparameter fn ist eine lokale Variable
fn='bar'; // Diese lokale Variable hat nun den Wert 'bar'
} // Nach Beendigung der Funktion ist das Leben dieser
// lokalen Variablen beendet
// Du möchtest hingegen den Wert der "globaleren" Variablen foo ändern.
[...]
<a href="#" onclick="overwrite(foo);">Click1</a><br>
<a href="#" onclick="alert(foo);">Click2</a>
> Bei Klicks auf Click1 und dann auf Click2 erwarte ich - offenbar irrtümlicherweise - ein alert mit 'bar'.
> Ist aber 'foo'. Das heisst, die Variable foo wird nicht überschrieben.
>
> Wo ist der Denkfehler/die Wissenslücke?
SELFHTML, Abschnitt [Variablen definieren](http://de.selfhtml.org/javascript/sprache/variablen.htm).
Grundsätzlich ist es eine gute Idee, nur so wenige globale Variablen zu verwenden, wie möglich. Packe doch Dein foo als Eigenschaft in ein Objekt und ändere den Wert dieser Objekteigenschaft.
Freundliche Grüße
Vinzenz