Шумо чӣ гуна фаҳмед, ки интиқол бо истинод чист?
sobes.tech AI
Ҷавоб аз AI
Дар JavaScript, примиўни навъҳои маълумот (стрингҳо, рақамҳо, мантиқӣ арзишҳо, null, undefined, Symbol, BigInt) бо арзиш гузаронида мешаванд. Ин маъно дорад, ки вақте ки ба тағйирёбанда ё ба функсия мегузаронем, худи арзиш нусхабардорӣ мешавад.
Объектҳо (аз ҷумла массивҳо ва функсияҳо) бо истинод гузаронида мешаванд ва нусхабардорӣ мешаванд. Дар асл, на худи объект, балки истинод ба минтақаи хотира, ки он дар он нигоҳ дошта мешавад, нусхабардорӣ мешавад.
// Гузариш бо арзиш
let a = 10;
let b = a; // Нусхабардории арзиши 10
b = 20;
console.log(a); // 10, тағйир додани 'b' ба 'a' таъсир намерасонад
// Гузариш бо истинод
let obj1 = { value: 10 };
let obj2 = obj1; // Нусхабардории истинод ба объект
obj2.value = 20;
console.log(obj1.value); // 20, тағйирот дар 'obj2' ба 'obj1' таъсир мерасонад, зеро онҳо ба як объект ишора мекунанд
Вақте ки объект ба функсия дода мешавад, функсия нусхаи истинодро мегирад. Тағйир додани хосиятҳои объект дар дохили функсия ба объекти аслӣ таъсир мерасонад, зеро истинод якхела аст. Аммо, агар дар дохили функсия ба тағйирёбанда объекти нав таъин карда шавад, объекти аслӣ тағир намеёбад, зеро истинод ба минтақаи дигаре мегузарад.
function modifyObject(obj) {
obj.newValue = 30; // Тағйир додани объект
}
function assignNewObject(obj) {
obj = { anotherValue: 40 }; // Варақаи 'obj' дар дохили функсия ҳоло ба объекти нав ишора мекунад
}
let myObject = { initialValue: 10 };
modifyObject(myObject);
console.log(myObject); // { initialValue: 10, newValue: 30 }
let anotherObject = { initialValue: 10 };
assignNewObject(anotherObject);
console.log(anotherObject); // { initialValue: 10 }, объекти аслӣ тағир намеёбад