Sobes.tech
Junior

Kā darbojas datu pārraide pa saiti un pēc vērtības?

sobes.tech AI

Atbilde no AI

Datu nodošanas pēc vērtības (by value) un pēc atsauces (by reference) nosaka, kā mainās oriģinālā mainīgā, to nodošanas vai piešķiršanas laikā.

Nodošana pēc vērtības:

Tiek izveidota mainīgā vērtības kopija. Jebkādas izmaiņas šajā kopijā funkcijas vai piešķiršanas laikā neietekmē oriģinālo mainīgo. Piemērots primitivajiem datu tipiem (skaitļi, virknes, loģiskās vērtības, null, undefined, Symbol, BigInt).

// Nodošana pēc vērtības
let a = 10;

function modifyValue(num) {
  num = 20; // mainās kopija
}

modifyValue(a);
console.log(a); // izvadīs 10 - oriģinālā vērtība nemainījās

Atsauce:

Nepārnes pašas vērtības, bet atsauci (atmiņas adresi) uz šo vērtību. Izmaiņas, kas veiktas ar šo atsauci, ietekmē oriģinālo mainīgo. JavaScript tiek izmantots objektu (ieskaitot masīvus un funkcijas). Svarīgi saprast, ka tiek nodota ne objekta vērtība, bet atsauce uz to. Funkcijā parametra pārsūtīšana, atsaucei tiek piešķirta jauna vērtība, bet oriģinālais objekts nemainās.

// Objektu atsauce
let obj1 = { value: 10 };

function modifyObject(obj) {
  obj.value = 20; // mainās objekta īpašība
}

modifyObject(obj1);
console.log(obj1.value); // izvadīs 20 - oriģinālais objekts mainījās
// Pārrakstīšanas piemērs
let obj2 = { value: 10 };

function reassignObject(obj) {
  obj = { value: 30 }; // obj norāda uz jaunu objektu
}

reassignObject(obj2);
console.log(obj2.value); // izvadīs 10 - oriģinālais objekts nemainījās
Īpašība Nodošana pēc vērtības Atsauce (referencē)
Kas tiek nodots Vērtības kopija Atsauce uz vērtību
Ietekme uz oriģinālu Jā (mainoties īpašībām)
JS datu tipi Primitīvie tipi Objekti