Moin Antje!
Das ist auch richtig so. Der Parameter lebt nur solange wie der Funktionsaufuf dauert. Die Methode setTimeout() erzeugt eine Verzögerung des Aufrufes und wird erst wirksam, wenn die Funktion bereits abgearbeitet ist. Wenn dann der Aufruf abgearbeitet wird, existiert x natürlich schon längst nicht mehr, daher die Fehlermeldung.
Nicht nur das. Vor allem findet der von setTimeout getriggerte Aufruf im globalen Namespace statt. Also auch wenn die Funktion nach den 10ms noch laeuft, klappt das nicht, es sei denn, es gibt eine Variable window.x. Wenn es die aber gibt, ist es wiederum egal, ob die Funktion noch ausgefuehrt wird oder nicht mehr.
So long