Kako funkcioniše prenos podataka putem reference i putem vrednosti?
sobes.tech АИ
Одговор од АИ
Prenos podataka po vrednosti (by value) i po referenci (by reference) određuje kako se menja originalna promenljiva prilikom prenosa u funkciju ili prilikom dodele.
Prenos po vrednosti:
Kreira se kopija vrednosti promenljive. Bilo kakva promena te kopije unutar funkcije ili prilikom dodele ne utiče na originalnu promenljivu. Pogodno za primitivne tipove podataka (brojevi, stringovi, boolean, null, undefined, Symbol, BigInt).
// Prenos po vrednosti
let a = 10;
function modifyValue(num) {
num = 20; // Kopija se menja
}
modifyValue(a);
console.log(a); // Ispisaće 10 - originalna vrednost se nije promenila
Prenos po referenci:
Ne prenosi se sama vrednost, već referenca (adresa u memoriji) na tu vrednost. Promene izvršene putem te reference utiču na originalnu promenljivu. U JavaScript-u, ovo važi za objekte (uključujući nizove i funkcije). Važno je razumeti da se ne prenosi sam objekat, već referenca na njega. Kada se parametar prepiše unutar funkcije, referenca dobija novu vrednost, ali originalna promenljiva se ne menja.
// Prenos po referenci (za objekte)
let obj1 = { value: 10 };
function modifyObject(obj) {
obj.value = 20; // Svojstvo objekta se menja putem reference
}
modifyObject(obj1);
console.log(obj1.value); // Ispisaće 20 - originalni objekat se promenio
// Primer prepisivanja parametra prilikom prenosa objekta
let obj2 = { value: 10 };
function reassignObject(obj) {
obj = { value: 30 }; // obj sada referiše na novi objekat u lokalnom opsegu funkcije
}
reassignObject(obj2);
console.log(obj2.value); // Ispisaće 10 - originalni objekat se nije promenio
| Karakteristika | Prenos po vrednosti | Prenos po referenci |
|---|---|---|
| Šta se prenosi | Kopija vrednosti | Referenca na vrednost |
| Uticaj na original | Ne | Da (pri promeni svojstava) |
| Tipovi podataka u JS | Primitivni tipovi | Objekti |