Sobes.tech
Junior

Kuidas töötab andmete edastamine viitega ja väärtusega?

sobes.tech AI

Vastus AI-lt

Andmeedastamine väärtuse (by value) ja viitega (by reference) määrab, kuidas algne muutuja muutub selle edastamisel funktsiooni või omistamisel.

Väärtuse edastamine:

Loob muutuja väärtuse koopia. Kõik selle koopias tehtud muudatused ei mõjuta algset muutujat. Sobib primitiivsetele andmetüüpidele (arvud, stringid, boolean, null, undefined, Symbol, BigInt).

// Väärtuse edastamine
let a = 10;

function modifyValue(num) {
  num = 20; // muudetakse koopia
}

modifyValue(a);
console.log(a); // väljastab 10 - algne väärtus ei muutunud

Viide:

Ei edastata ise väärtust, vaid viidet (mäluaadress) sellele väärtusele. Muudatused selle viitega mõjutavad algset muutujat. JavaScriptis kasutatakse objekte (sh massiive ja funktsioone). Oluline on mõista, et edastatakse mitte objekt ise, vaid viide sellele. Funktsiooni parameetri edastamisel omistatakse viidetele uus väärtus, kuid algne objekt ei muutu.

// Objektide viide
let obj1 = { value: 10 };

function modifyObject(obj) {
  obj.value = 20; // muudetakse objekti omadus
}

modifyObject(obj1);
console.log(obj1.value); // väljastab 20 - algne objekt muutus
// Parameetri ümbermääramise näide
let obj2 = { value: 10 };

function reassignObject(obj) {
  obj = { value: 30 }; // obj viitab uuele objektile
}

reassignObject(obj2);
console.log(obj2.value); // väljastab 10 - algne objekt ei muutunud
Omadus Väärtuse edastamine Viitega (referentsiga)
Mis edastatakse Väärtuse koopia Viide väärtusele
Mõju algsele Ei Jah (omaduste muutmisel)
JS andmetüübid Primitivsed tüübid Objekti tüübid