Sobes.tech
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 }; // obj ეხება ახალ ობიექტს ადგილობრივ სკოპში
}

reassignObject(obj2);
console.log(obj2.value); // გამოიტანს 10 - ორიგინალი ობიექტი არ შეიცვალა
ხასიათი მნიშვნელობით გადაცემა მითითებით გადაცემა
რა გადაეცემა მნიშვნელობის ასლი მისამართი (მიღება)
გავლენა ორიგინალზე არა კი (როდესაც თვისებები იცვლება)
JS-ის მონაცემთა ტიპები პრიმიტიული ტიპები ობიექტები