Sobes.tech
Junior

Hoe begrijp je wat doorverwijzing is?

sobes.tech AI

Antwoord van AI

In JavaScript worden primitieve datatypes (strings, nummers, booleaanse waarden, null, undefined, Symbol, BigInt) door waarde doorgegeven. Dit betekent dat bij toewijzing of doorgeven aan een functie, de waarde zelf wordt gekopieerd.

Objecten (inclusief arrays en functies) worden door referentie doorgegeven en gekopieerd. In feite wordt niet het object zelf gekopieerd, maar de verwijzing naar het geheugengebied waar het zich bevindt.

// Doorgeven op waarde
let a = 10;
let b = a; // Kopieert de waarde 10
b = 20;
console.log(a); // 10, het wijzigen van 'b' beïnvloedt 'a' niet

// Doorgeven op referentie
let obj1 = { value: 10 };
let obj2 = obj1; // Kopieert de verwijzing naar het object
obj2.value = 20;
console.log(obj1.value); // 20, wijzigingen via 'obj2' beïnvloeden 'obj1' omdat ze naar hetzelfde object wijzen

Bij het doorgeven van een object aan een functie, ontvangt de functie een kopie van de verwijzing. Het wijzigen van de eigenschappen van het object binnen de functie zal het originele object beïnvloeden, omdat de verwijzing hetzelfde is. Als binnen de functie echter een nieuw object aan de variabele wordt toegewezen, blijft het oorspronkelijke object ongewijzigd, omdat de verwijzing naar een andere geheugenlocatie wijst.

function modifyObject(obj) {
  obj.newValue = 30; // Wijzigt het originele object
}

function assignNewObject(obj) {
  obj = { anotherValue: 40 }; // De variabele 'obj' binnen de functie wijst nu naar een nieuw object
}

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

let anotherObject = { initialValue: 10 };
assignNewObject(anotherObject);
console.log(anotherObject); // { initialValue: 10 }, het originele object is niet veranderd