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 |