Sobes.tech
Junior

Hogyan működik az adatátvitel referencia és érték szerint?

sobes.tech MI

Válasz az MI-től

Az adatok érték szerinti (by value) és referencia szerinti (by reference) átadása meghatározza, hogy az eredeti változó hogyan változik, amikor egy függvénynek adjuk át vagy hozzárendeljük.

Érték szerinti átadás:

Létrejön a változó értékének másolata. Bármilyen változtatás ezen a másolaton a függvényen belül vagy az érték hozzárendelésekor nem befolyásolja az eredeti változót. Alkalmas primitív típusokra (számok, szövegek, logikai értékek, null, undefined, Symbol, BigInt).

// Érték szerinti átadás
let a = 10;

function modifyValue(num) {
  num = 20; // A másolat módosul
}

modifyValue(a);
console.log(a); // 10-et ír ki - az eredeti érték nem változott

Referencia szerinti átadás:

Nem az érték maga kerül átadásra, hanem egy hivatkozás (memória cím) erre az értékre. A rajta végzett módosítások hatással vannak az eredeti változóra. JavaScriptben ez az objektumokra (beleértve a tömböket és függvényeket) vonatkozik. Fontos megérteni, hogy nem az objektumot adjuk át, hanem egy hivatkozást rá. Amikor egy paramétert újra hozzárendelünk egy függvényen belül, a hivatkozás új értéket kap, de az eredeti változó nem változik.

// Objektum referencia szerinti átadás
let obj1 = { value: 10 };

function modifyObject(obj) {
  obj.value = 20; // Az objektum tulajdonsága referencia által módosul
}

modifyObject(obj1);
console.log(obj1.value); // 20-at ír ki - az eredeti objektum megváltozott
// Példa a paraméter újra hozzárendelésére egy objektum átadásakor
let obj2 = { value: 10 };

function reassignObject(obj) {
  obj = { value: 30 }; // az obj most egy új objektumra hivatkozik a helyi scope-ban
}

reassignObject(obj2);
console.log(obj2.value); // 10-et ír ki - az eredeti objektum nem változott
Jellemző Érték szerinti átadás Referencia szerinti átadás
Mit adunk át Az érték másolata A referencia az értékre
Hatás az eredetin Nem Igen (ha tulajdonságokat módosítunk)
JS adat típusok Primitívek Objektumok