Hallo IST-Mainz,
Genau wie Andreas schon sagte, ist das keine wirkliche Lösung.
Es ist quasi dasselbe, als würde man schreiben:
var u=1; var v=2;
function tausche() {
var w = u;
u=v;
v=w;
}
tausche();
Es greift direkt auf die Variablen ausserhalb der Funktion zu,
so dass man auch auf die Funktion verzichten könnte,
da man eh nur 2 bestimmte Variablen tauschen kann.
Das return a,b; am Ende deiner „Lösung“ ist zudem irreführend,
da es zwar dort steht abr überhaupt nichts zur Vertauschung beiträgt.
Aber wenn es schon in JavaScript keine Möglichkeit gibt,
das in etwa so zu machen, wie es sich michael vorstellte,
warum sollte man dann nicht wenigstens mal erwähnen,
dass man es in anderen Programmiersprachen schon zumindestens so ähnlich umzusetzen kann?
Ein Blick über den Tellerrand kann ja eigentlich nicht schaden.
Die JavaScript-Frage haben wir ja trotzdem beantwortet
und man kann diese Lösung(Referenzen) auch überall anwenden,
wo man so etwas wie Zeiger bräuchte.
Und selbst, wenn du eine bessere/einfachere funktionierende Lösung gehabt hättest,
dann musst du doch wenigstens anerkennen,
dass wir uns zumindestens Mühe gegeben haben,
die Frage zufriedenstellend zu beantworten.
Deswegen, klang deine Antwort auch für meinen
Geschmackt ein bisschen unfreundlich.
@michael
Mir ist noch eine Lösung eingefallen, die evtl. etwas einfacher ist,
weil sie ohne Klassen auskommt.
Und zwar sind auch Arrays in JavaScript Referenzen
und wenn du einfach die Werte zweier ein-elementiger Arrays tauschst,
dann ändern sich die Werte auch für den Aufrufer:
// a und b sind Referenzen auf Arrays
function tausche(a,b) {
var w=a[0];
a[0] = b[0];
b[0] = w;
}
// Erzeuge zwei ein-elementige Arrays
var a = new Array(1);
var b = new Array(1);
a[0]=1;
b[0]=2;
alert(a[0] + " " + b[0]);
// tausche per Referenz:
tausche(a,b);
alert(a[0] + " " + b[0]);
Ich bin ziemlich sicher, dass es nicht noch einfacher in JS geht.
Lieben Gruß
VoidZer0