ჯავაკრიპტის ერთ-ერთი საინტერესო თემაა თუ როგორ ხდება კომპიუტერის მეხსიერებაში ინფორმაციის შენახვა და შემდეგ მათზე წვდომა.
პრიმიტიული ტიპები (მაგალითად: number
, string
, boolean
, null
, undefined
, symbol
, bigint
) მეხსიერებაში ინახება უშუალოდ მათი მნიშვნელობებით. როდესაც თქვენ პრიმიტიული ტიპს ანიჭებთ სხვა ცვლადს, იქმნება ამ მონაცემის კოპია.
მაგალითი:
let a = 10;
let b = a; // აქ b იღებს a-ს მნიშვნელობის კოპიას
b = 20;
console.log(a); // 10
console.log(b); // 20
მოცემულ მაგალითში, a
და b
ერთმანეთს აღარ უკავშირდებიან. b
ცვლის საკუთარ მნიშვნელობას ისე, რომ a
უცვლელი რჩება.
ობიექტები (მაგალითად: object
, array
, function
) მეხსიერებაში ინახება რეფერენსით (მიმთითებლით). ეს ნიშნავს, რომ ცვლადი ინახავს მხოლოდ მეხსიერების მისამართს, სადაც ობიექტი მდებარეობს, და არა თავად ობიექტს.
როდესაც ობიექტს ანიჭებთ სხვა ცვლადს, ეს ცვლადი იგივე რეფერენსს იღებს, რაც ნიშნავს, რომ ორივე ცვლადი ერთსა და იმავე ობიექტზე მიუთითებს.
მაგალითი:
let obj1 = { name: "Giorgi" };
let obj2 = obj1; // obj2 იღებს obj1-ის რეფერენსს (მიმთითებელს)
obj2.name = "Nino";
console.log(obj1.name); // "Nino"
console.log(obj2.name); // "Nino"
ზემოთ აღწერილ მაგალითში, obj1
და obj2
ორივე მიუთითებს ერთსა და იმავე ობიექტზე, ამიტომ ცვლილება ერთზე ავტომატურად აისახება მეორეზეც.
JavaScript-ში რეფერენსი არის გზა, რომლითაც ობიექტები ან მონაცემთა სტრუქტურები ინახება მეხსიერებაში. როდესაც ცვლადს აკავშირებთ ობიექტთან, ეს არ ნიშნავს, რომ ცვლადი ინახავს თვით ობიექტს. ამის ნაცვლად, ის ინახავს რეფერენსს, რომელიც მიუთითებს ობიექტზე მეხსიერებაში.
რეფერენსები საშუალებას აძლევს პროგრამას იმუშაოს ერთი და იმავე ობიექტზე სხვადასხვა ცვლადის მეშვეობით. ეს ნიშნავს, რომ თუ ერთ ცვლადში რეფერენსის მეშვეობით რაიმეს შეცვლით, ეს ცვლილება აისახება სხვა ცვლადებზეც, რომლებიც ასევე იმავე ობიექტზე მიუთითებენ.
რეფერენსების მართვა მნიშვნელოვანია JavaScript-ის მუშაობაში, რადგან ის გავლენას ახდენს მონაცემთა გადაცემასა და შენახვაზე. პრიმიტიული ტიპები (როგორიცაა რიცხვები და სტრინგები) ყოველთვის ინახება მნიშვნელობის მიხედვით, ხოლო ობიექტები და მასივები ინახება რეფერენსით.
რეფერენსებზე დაფუძნებული მუშაობა უფრო მოქნილ და ეფექტიან კოდს ქმნის, თუმცა აუცილებელია ფრთხილად იყოთ, რათა შემთხვევით არ შეცვალოთ მონაცემები, რომლებიც შესაძლოა სხვა ადგილებში გამოიყენებოდეს.
შეისწავლეთ ვებდეველოპმენტის ენები სრულიად უფასოდ, ისეთები როგორებიცაა Javascript, HTML, CSS და კიდევ სხვა მრავალი ენა
ქვემოთ მოცემულია უახლესი 3 ბლოგი პროგრამირების თემატიკასთან დაკავშირებით