როგორ მუშაობს მონაცემთა გადაცემა მითითებით და მნიშვნელობით?
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 }; // obj ეხება ახალ ობიექტს ადგილობრივ სკოპში
}
reassignObject(obj2);
console.log(obj2.value); // გამოიტანს 10 - ორიგინალი ობიექტი არ შეიცვალა
| ხასიათი | მნიშვნელობით გადაცემა | მითითებით გადაცემა |
|---|---|---|
| რა გადაეცემა | მნიშვნელობის ასლი | მისამართი (მიღება) |
| გავლენა ორიგინალზე | არა | კი (როდესაც თვისებები იცვლება) |
| JS-ის მონაცემთა ტიპები | პრიმიტიული ტიპები | ობიექტები |