Junior
Ի՞նչ է տվյալների տարբեր տեսակների տարբերությունը։
sobes.tech AI
Պատասխան AI-ից
JavaScript-ում տվյալները բաժանվում են հիմնական տիպերի և օբյեկտների:
Հիմնական տիպեր:
- String: Տեքստային հաջորդականություն: Անփոփոխ:
- Number: Թվեր, ներառյալ ամբողջ թվերը և տատանվող կետով թվերը, ինչպես նաև
Infinity,-InfinityևNaN: - Boolean: Լոգիկական արժեք (
trueկամfalse): - Null: Հատուկ արժեք, որը ներկայացնում է օբյեկտի բացակայությունը:
- Undefined: Փոփոխականի արժեքը, որը չի նշանակվել:
- Symbol: Յունիկալ և անփոփոխ հիմնական տիպ, օգտագործվում է օբյեկտի հատկությունների նույնականացման համար:
- BigInt: Անսահման երկարության ամբողջ թվեր:
Օբյեկտներ:
- Object: Կազմածություն բանալի-արժեք զույգերի: Փոփոխական: Օրինակներ՝ զանգվածներ, ֆունկցիաներ, կանոնավոր արտահայտություններ, ամսաթվեր:
Հիմնական տարբերությունները:
- Փոփոխականություն (Mutability): Հիմնական տիպերը անփոփոխ են, այսինքն՝ նրանց արժեքը ուղղակիորեն փոխել հնարավոր չէ: Փոփոխության փորձը ստեղծում է նոր պատճեն: Օբյեկտները փոփոխական են, նրանց հատկությունները կարող են ավելացվել, հեռացվել և փոխվել:
- Փոխանցում ըստ արժեքի/հղման: Հիմնական տիպերը փոխանցվում են ըստ արժեքի (կոպիրվում է հենց արժեքը): Օբյեկտները փոխանցվում են ըստ հղման (կոպիրվում է հղումը հիշողության տեղին, որտեղ պահվում է օբյեկտը):
- Համեմատում: Հիմնական տիպերը համեմատվում են ըստ արժեքի: Օբյեկտները համեմատվում են հղման միջոցով (երկու փոփոխականներ հղում են անում նույն օբյեկտին հիշողության մեջ):
// Օրինակներ
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 | Օբյեկտներ (ներառյալ զանգվածները, ֆունկցիաները և այլն) |