Vinzenz Mai: Wo liegt mein Denkfehler?

Beitrag lesen

Hallo Struppi,

<script type="text/javascript">
var foo='test';
function overwrite(fn) {
fn='t';
}

einfache Datentypen, werden in JS nicht als Referenzen übergeben.

sondern als Wert, Aufrufmethode "Call by value".

D.h. du müßtest hier eigentlich eine Fehlermeldung erhalten (Fehlerkonsole ist tatsächlich leer?), da fn der string 'test' ist und 'test' = 't' geht nicht.

Nein, wieso sollte es zu einer Fehlermeldung kommen?

fn ist eine Variable, eine lokale Variable innerhalb der Funktion. Dieser wird bei beiden Funktionsaufrufen der Wert 'test' zugewiesen. Es ist kein Problem, dieser Variablen den Wert 't' zuzuweisen, der anschließend entsorgt wird, da die Funktion beendet ist und die Variable fn somit ihr Leben aushaucht bis sie beim nächsten Funktionsaufruf wieder aufersteht und mit dem übergebenen Wert neu gefüllt wird. Dieser wird wieder zu 't' geändert und unmittelbar danach ist das kurze Leben von fn wieder vorbei.

Ich sehe keinen Grund, warum es zu einer Fehlermeldung kommen sollte. Syntaktisch ist doch alles korrekt.

Freundliche Grüße

Vinzenz