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 - հղումները համեմատվում են (նրանք ցույց են տալիս տարբեր օբյեկտների), թեև պարունակությունը նույնն է

Տարբերությունների աղյուսակ:

Գծանիշ Հիմնական տիպեր Օբյեկտներ
Փոփոխականություն Անփոփոխ (immutable) Փոփոխական (mutable)
Փոխանցում ըստ արժեքի ըստ հղման
Համեմատություն ըստ արժեքի ըստ հղման
Սխեմա ուղղակի փոփոխականում հղում դեպի հիշողության տեղը
Տվյալների տեսակներ String, Number, Boolean, Null, Undefined, Symbol, BigInt Օբյեկտներ (ներառյալ զանգվածները, ֆունկցիաները և այլն)