Ako funguje prenos dát cez odkaz a cez hodnotu?
sobes.tech AI
Odpoveď od AI
Prenos údajov po hodnote (by value) a po referencii (by reference) určuje, ako sa mení pôvodná premenná pri jej odovzdaní do funkcie alebo pri priraďovaní.
Prenos po hodnote:
Vytvorí sa kópia hodnoty premennej. Akákoľvek zmena tejto kópie vo vnútri funkcie alebo pri priraďovaní neovplyvňuje pôvodnú premennú. Vhodné pre primitívne dátové typy (čísla, reťazce, boolean, null, undefined, Symbol, BigInt).
// Prenos po hodnote
let a = 10;
function modifyValue(num) {
num = 20; // Kópia sa zmení
}
modifyValue(a);
console.log(a); // Vypíše 10 - pôvodná hodnota sa nezmenila
Prenos po referencii:
Nejde o samotnú hodnotu, ale odkaz (adresa v pamäti) na túto hodnotu. Zmeny vykonané cez tento odkaz ovplyvnia pôvodnú premennú. V JavaScripte sa to týka objektov (vrátane polí a funkcií). Je dôležité pochopiť, že sa neodovzdáva samotný objekt, ale odkaz na neho. Pri prepisovaní parametra vo vnútri funkcie sa odkaz priradí na novú hodnotu, ale pôvodná premenná sa nezmení.
// Prenos po referencii (pre objekty)
let obj1 = { value: 10 };
function modifyObject(obj) {
obj.value = 20; // Vlastnosť objektu sa mení cez odkaz
}
modifyObject(obj1);
console.log(obj1.value); // Vypíše 20 - pôvodný objekt sa zmenil
// Príklad prepisovania parametra pri odovzdávaní objektu
let obj2 = { value: 10 };
function reassignObject(obj) {
obj = { value: 30 }; // obj teraz odkazuje na nový objekt v lokálnom rozsahu funkcie
}
reassignObject(obj2);
console.log(obj2.value); // Vypíše 10 - pôvodný objekt sa nezmenil
| Charakteristika | Prenos po hodnote | Prenos po referencii |
|---|---|---|
| Čo sa odovzdáva | Kópia hodnoty | Referencia na hodnotu |
| Vplyv na originál | Nie | Áno (pri zmene vlastností) |
| Typy dát v JS | Primitívne hodnoty | Objekty |