Sobes.tech
Junior

Ma'lumotlarni uzatish referens va qiymat orqali qanday ishlaydi?

sobes.tech AI

AIdan javob

Ma'lumotlarni qiymat (by value) va referensiya (by reference) orqali uzatish, ularni funksiyaga o'tkazishda yoki tayinlashda asl o'zgaruvchining qanday o'zgarishini belgilaydi.

Qiymat orqali uzatish:

O'zgaruvchining qiymatining nusxasi yaratiladi. Bu nusxa ichida funksiyada yoki tayinlashda amalga oshirilgan har qanday o'zgarishlar asl o'zgaruvchiga ta'sir qilmaydi. Bu primitiv ma'lumot turlari uchun mos (raqamlar, satrlar, boolean qiymatlar, null, undefined, Symbol, BigInt).

// Qiymat orqali uzatish
let a = 10;

function modifyValue(num) {
  num = 20; // Nusxa o'zgartiriladi
}

modifyValue(a);
console.log(a); // 10 chiqaradi - asl qiymat o'zgarmadi

Referensiya orqali uzatish:

Bu qiymat emas, balki unga bo'lgan havola (xotira manzili) uzatiladi. Bu havola orqali kiritilgan o'zgarishlar asl o'zgaruvchini ta'sir qiladi. JavaScriptda bu ob'ektlar uchun (massivlar va funksiyalarni o'z ichiga oladi) qo'llaniladi. Muhim nuqta shundaki, ob'ektning o'zi emas, referensiya uzatiladi. Parametr funksiyada qayta tayinlanganda, referensiyaga yangi qiymat beriladi, lekin asl o'zgaruvchi o'zgarmaydi.

// Ob'ektlar uchun referensiya orqali uzatish
let obj1 = { value: 10 };

function modifyObject(obj) {
  obj.value = 20; // Ob'ektning xususiyati referensiya orqali o'zgartiriladi
}

modifyObject(obj1);
console.log(obj1.value); // 20 chiqaradi - asl ob'ekt o'zgardi
// Ob'ektni uzatishda parametrni qayta tayinlash misoli
let obj2 = { value: 10 };

function reassignObject(obj) {
  obj = { value: 30 }; // obj endi lokal doirada yangi ob'ektga referensiya qiladi
}

reassignObject(obj2);
console.log(obj2.value); // 10 chiqaradi - asl ob'ekt o'zgarmadi
Xususiyat Qiymat orqali uzatish Referensiya orqali uzatish
Nima uzatiladi Qiymatning nusxasi Referensiya (havola)
Aslga ta'siri Yo'q Ha (xususiyatlar o'zgarganda)
JS ma'lumot turlari Primitivlar Ob'ektlar