Sobes.tech
Junior

რა არის მონაცემთა სხვადასხვა ტიპებს შორის განსხვავება?

sobes.tech AI

პასუხი AI-სგან

JavaScript-ში მონაცემები ძირითად ტიპებსა და ობიექტებს იყოფა.

ძირითადი ტიპები:

  • String: სიმბოლოების სერია. შეუცვლელი.
  • Number: რიცხვები, მათ შორის მთელი და ხარვეზიანი, ასევე Infinity, -Infinity და NaN.
  • Boolean: ლოგიკური მნიშვნელობა (true ან false).
  • Null: სპეციალური მნიშვნელობა, რომელიც წარმოადგენს ობიექტის არარსებობას.
  • Undefined: ცვლადის მნიშვნელობა, რომელსაც მნიშვნელობა არ აქვს მინიჭებული.
  • Symbol: უნიკალური და შეუცვლელი ძირითადი ტიპი, რომელიც გამოიყენება ობიექტის თვისებების იდენტიფიკატორად.
  • BigInt: შეუზღუდავი სიგრძის მთელი რიცხვები.

ობიექტები:

  • Object: გასაღები-მნიშვნელობის წყვილების კოლექცია. შეცვლადი. მაგალითები: მასივები, ფუნქციები, რეგულარული გამოთქმები, თარიღები.

ძირითადი განსხვავებები:

  1. შეცვლადობა (Mutability): ძირითადი ტიპები შეუცვლელია, ანუ მათი მნიშვნელობა პირდაპირ ვერ შეიცვლება. შეცვლის მცდელობისას ქმნება ახალი კოპია. ობიექტები შეცვლადია, მათი თვისებები შეიძლება დაემატოს, წაიშალოს და შეიცვალოს.
  2. გადაცემა მნიშვნელობით/ლინკით: ძირითადი ტიპები გადაეცემა მნიშვნელობით (კოპირებულია თავად მნიშვნელობა). ობიექტები გადაეცემა ლინკით (კოპირებულია ლინკი მეხსიერების ადგილას, სადაც ობიექტი ინახება).
  3. შედარება: ძირითადი ტიპები შედარებულია მნიშვნელობით. ობიექტები შედარებულია ლინკით (ორი ცვლადი მიუთითებს ერთსა და იმავე ობიექტზე მეხსიერებაში).
// მაგალითები
let str1 = "hello";
let str2 = str1; // str2 იღებს str1-ის მნიშვნელობის კოპიას
str1 = "world"; // ახალი სტრიქონი "world" შეიქმნება str1-ისთვის
console.log(str2); // "hello" - str2 არ შეიცვალა

let obj1 = { name: "Alice" };
let obj2 = obj1; // obj2 იღებს მითითებას იმავე ობიექტზე, როგორც obj1
obj1.name = "Bob"; // ობიექტის თვისება იცვლება, რადგან ორივე მითითება ერთსა და იმავე ობიექტზე მიუთითებს
console.log(obj2.name); // "Bob" - obj2 შეიცვალა

let num1 = 10;
let num2 = 10;
console.log(num1 === num2); // true - მნიშვნელობები თანხვედრილია

let objA = { value: 1 };
let objB = { value: 1 };
console.log(objA === objB); // false - ლინკები შედარებულია (მათ მიუთითებენ სხვადასხვა ობიექტზე, მიუხედავად იმისა, რომ შიგთავსი ერთნაირია)

შედარების ცხრილი:

მახასიათებელი ძირითადი ტიპები ობიექტები
შეცვლადობა შეუცვლელი შეცვლადი
გადაცემა მნიშვნელობით ლინკით
შედარება მნიშვნელობით ლინკით
შენახვა პირდაპირ ცვლადში ლინკი მეხსიერების ადგილას
მონაცემთა ტიპები String, Number, Boolean, Null, Undefined, Symbol, BigInt ობიექტები (მათ შორის მასივები, ფუნქციები და სხვა)