Sobes.tech
Junior

Wie funktioniert die Datenübertragung per Referenz und per Wert?

sobes.tech KI

Antwort von AI

Die Datenübertragung nach Wert (by value) und nach Referenz (by reference) bestimmt, wie sich die Originalvariable beim Übergabe an eine Funktion oder bei der Zuweisung ändert.

Übergabe nach Wert:

Es wird eine Kopie des Variablenwerts erstellt. Änderungen an dieser Kopie innerhalb der Funktion oder bei der Zuweisung beeinflussen die Originalvariable nicht. Geeignet für primitive Datentypen (Zahlen, Strings, boolesche Werte, null, undefined, Symbol, BigInt).

// Übergabe nach Wert
let a = 10;

function modifyValue(num) {
  num = 20; // Kopie wird geändert
}

modifyValue(a);
console.log(a); // Gibt 10 aus - der Originalwert hat sich nicht geändert

Übergabe nach Referenz:

Es wird nicht der Wert selbst, sondern eine Referenz (Adresse im Speicher) auf diesen Wert übergeben. Änderungen, die über diese Referenz gemacht werden, betreffen die Originalvariable. In JavaScript wird dies für Objekte (einschließlich Arrays und Funktionen) verwendet. Es ist wichtig zu verstehen, dass nicht das Objekt selbst, sondern eine Referenz darauf übergeben wird. Bei der Neuzuweisung eines Parameters innerhalb der Funktion wird der Referenz ein neuer Wert zugewiesen, aber die Originalvariable ändert sich nicht.

// Übergabe nach Referenz (für Objekte)
let obj1 = { value: 10 };

function modifyObject(obj) {
  obj.value = 20; // Das Objekt wird durch Referenz geändert
}

modifyObject(obj1);
console.log(obj1.value); // Gibt 20 aus - das Originalobjekt hat sich geändert
// Beispiel für Neuzuweisung des Parameters bei Übergabe eines Objekts
let obj2 = { value: 10 };

function reassignObject(obj) {
  obj = { value: 30 }; // obj verweist jetzt auf ein neues Objekt im lokalen Gültigkeitsbereich der Funktion
}

reassignObject(obj2);
console.log(obj2.value); // Gibt 10 aus - das Originalobjekt hat sich nicht geändert
Charakteristik Übergabe nach Wert Übergabe nach Referenz
Was übergeben wird Kopie des Wertes Referenz auf den Wert
Einfluss auf das Original Nein Ja (bei Änderung der Eigenschaften)
Datentypen in JS Primitive Objekte