Sobes.tech
Junior

Wie verstehst du, was eine Übergabe per Referenz ist?

sobes.tech KI

Antwort von AI

In JavaScript werden primitive Datentypen (Zeichenketten, Zahlen, boolesche Werte, null, undefined, Symbol, BigInt) nach Wert übergeben. Das bedeutet, dass beim Zuweisen oder Übergeben an eine Funktion der Wert selbst kopiert wird.

Objekte (einschließlich Arrays und Funktionen) werden per Referenz übergeben und kopiert. Tatsächlich wird nicht das Objekt selbst kopiert, sondern die Referenz auf den Speicherbereich, in dem es gespeichert ist.

// Übergabe nach Wert
let a = 10;
let b = a; // Der Wert 10 wird kopiert
b = 20;
console.log(a); // 10, Änderungen an 'b' beeinflussen 'a' nicht

// Übergabe nach Referenz
let obj1 = { value: 10 };
let obj2 = obj1; // Die Referenz auf das Objekt wird kopiert
obj2.value = 20;
console.log(obj1.value); // 20, Änderungen über 'obj2' wirken sich auf 'obj1' aus, da sie auf dasselbe Objekt zeigen

Wenn ein Objekt an eine Funktion übergeben wird, erhält die Funktion eine Kopie der Referenz. Änderungen an den Eigenschaften des Objekts innerhalb der Funktion wirken sich auf das Originalobjekt aus, weil die Referenz dieselbe ist. Wenn jedoch innerhalb der Funktion ein neues Objekt der Variablen zugewiesen wird, bleibt das ursprüngliche Objekt unverändert, da die Referenz auf einen anderen Speicherbereich zeigt.

function modifyObject(obj) {
  obj.newValue = 30; // Ändert das Originalobjekt
}

function assignNewObject(obj) {
  obj = { anotherValue: 40 }; // Die Variable 'obj' innerhalb der Funktion zeigt jetzt auf ein neues Objekt
}

let myObject = { initialValue: 10 };
modifyObject(myObject);
console.log(myObject); // { initialValue: 10, newValue: 30 }

let anotherObject = { initialValue: 10 };
assignNewObject(anotherObject);
console.log(anotherObject); // { initialValue: 10 }, das ursprüngliche Objekt hat sich nicht geändert