Junior
Чӣ тавр кор мекунад интиқоли маълумот тавассути истинод ва арзиш?
sobes.tech AI
Ҷавоб аз AI
Өгөгдлийг утгаар нь (by value) ба холбоосоор нь (by reference) дамжуулах нь өөрчлөгдөхөд анхны хувьсагч хэрхэн өөрчлөгдөхийг тодорхойлдог.
Утгаар дамжуулалт:
Өгөгдлийн хувьсагчийн хуулбар үүсгэнэ. Энэ хуулбар доторх өөрчлөлтүүд нь анхны хувьсагчид нөлөөлөхгүй. Энгийн төрлийн өгөгдөл (тоо, мөр, булев утга, null, undefined, Symbol, BigInt) дээр тохиромжтой.
// Утгаар дамжуулалт
let a = 10;
function modifyValue(num) {
num = 20; // хуулбар өөрчлөгдөж байна
}
modifyValue(a);
console.log(a); // 10 гэж гарна - анхны утга өөрчлөгдөөгүй
Холбоосоор дамжуулалт:
Өгөгдлийн өөрөө биш, түүний хаяг (хувьсагчийн санах ойн хаяг) дамжигддаг. Энэ холбоосоор өөрчлөлт хийхэд анхны хувьсагчид нөлөөлнө. JavaScript дээр энэ нь объектуудад (массив, функц орно) хэрэглэгддэг. Анхаарах хэрэгтэй нь, объект өөрөө биш, түүний холбоос дамжигддаг. Функц доторх параметрийг шинэ утгатай болгох үед, анхны хувьсагч өөрчлөгдөхгүй.
// Объектүүдэд холбоосоор дамжуулалт
let obj1 = { value: 10 };
function modifyObject(obj) {
obj.value = 20; // объектын шинж чанар өөрчлөгдөж байна
}
modifyObject(obj1);
console.log(obj1.value); // 20 гэж гарна - анхны объект өөрчлөгдсөн
// Объектийг дахин томилох жишээ
let obj2 = { value: 10 };
function reassignObject(obj) {
obj = { value: 30 }; // шинэ объект руу холбоосыг өөрчилж байна
}
reassignObject(obj2);
console.log(obj2.value); // 10 гэж гарна - анхны объект өөрчлөгдөөгүй
| Онцлог | Утгаар дамжуулалт | Холбоосоор дамжуулалт |
|---|---|---|
| Юу дамжигддэг | Үнэтэй хуулбар | Холбоос (хаяг) |
| Үр нөлөө | Үгүй | Тийм (шинэ шинж чанар нэмэхэд) |
| JS-ийн өгөгдлийн төрөл | Энгийн төрөл | Объектүүд |