JavaScript Տիպերը. Ամբողջական Ուղեցույց
JavaScript-ը օգտագործում է դինամիկ տիպավորում, որտեղ փոփոխականների տիպը որոշվում է ավտոմատ կերպով՝ կախված նրանում պահվող արժեքից։ Տիպերը բաժանվում են երկու հիմնական խմբերի՝ պրիմիտիվ (արժեքային) և օբյեկտ (հղումային)։
1. Պրիմիտիվ Տիպեր (Primitive Types)
1.1 Number (Թիվ)
Ներկայացնում է թվային արժեքներ՝ ամբողջ կամ տասնորդական։
Օրինակ՝
let age = 25; // ամբողջ թիվ
let price = 9.99; // տասնորդական թիվ
Հատուկ արժեքներ՝
- NaN (Not a Number)՝ սխալ մաթեմատիկական գործողությունների դեպքում։
- Infinity և -Infinity՝ անսահմանություն։
Մանրամասն կարող ես կարդալ այստեղ
1.2 String (Տող)
Տեքստային տվյալներ՝ պարունակված եզակի (''), կրկնակի ("") կամ շեղ (` `) չակերտներում։
Օրինակ՝
let name = "Աննա";
let message = `Ողջույն, ${name}!`; // template տող
Մանրամասն կարող ես կարդալ այստեղ
1.3 Boolean (Տրամաբանական Արժեք)
Ունի երկու արժեք՝ true (ճշմարիտ) և false (կեղծ)։
Օրինակ՝
let isOnline = true;
let hasPermission = false;
Մանրամասն կարող ես կարդալ այստեղ
1.4 Null
Նշանակում է դատարկ կամ անհայտ արժեք։ Պետք է ձեռքով նշանակել։
Օրինակ՝
let user = null; // user-ի արժեքը դատարկ է
Մանրամասն կարող ես կարդալ այստեղ
1.5 Undefined
Նշանակում է, որ փոփոխականը հայտարարված է, բայց արժեք չի նշանակվել։
Օրինակ՝
let score;
console.log(score); // undefined
Մանրամասն կարող ես կարդալ այստեղ
1.6 Symbol (ES6-ից)
Ունիկալ (յուրահատուկ) արժեք՝ օգտագործվում է օբյեկտների հատկությունների բանալիներում։
Օրինակ՝
const id = Symbol("id");
1.7 BigInt (ES2020-ից)
Ներկայացնում է մեծ ամբողջ թվեր՝ ավելացնելով n վերջում։
Օրինակ՝
const bigNumber = 123456789012345678901234567890n;
2. Օբյեկտ Տիպեր (Object Types)
Օբյեկտները պարունակում են բարդ տվյալների կառուցվածքներ և հղվում են հիշողության մեջ իրենց դիրքով։
2.1 Object (Օբյեկտ)
Հավաքածու՝ բաղկացած բանալի-արժեք զույգերից։
Օրինակ՝
let person = {
name: "Կարեն",
age: 30
};
2.2 Array (Զանգված)
Հավաքածու՝ տարրերով, որոնք հասանելի են ինդեքսի միջոցով։
Օրինակ՝
let colors = ["կարմիր", "կապույտ", "կանաչ"];
2.3 Function (Ֆունկցիա)
Կատարելի կոդի բլոկ, որը կարող է կանչվել այլ տեղից։
Օրինակ՝
function add(a, b) {
return a + b;
}
2.4 Այլ Օբյեկտներ
- Date՝ ամսաթվեր և ժամանակ։
- RegExp՝ կանոնավոր արտահայտություններ։
- Error՝ սխալների մշակում։
Կան այսպիսի բազում այլ օբյեկտներ։
3. Տիպերի Ստուգում
typeof
typeof օպերատորը վերադարձնում է տիպը՝ որպես տող։
console.log(typeof 42); // "number"
console.log(typeof "Բարև"); // "string"
console.log(typeof undefined); // "undefined"
instanceof
instanceof՝ ստուգում է, արդյոք օբյեկտը պատկանում է տվյալ դասին։
console.log([] instanceof Array); // true
4. Տիպերի Փոխակերպում (Type Coercion)
JavaScript-ը ավտոմատ կերպով փոխակերպում է տիպերը գործողությունների ժամանակ․
- Թիվ → Տող՝ 5 + "" → "5":
- Տող → Թիվ՝ +"10" → 10:
- Բուլյան փոխակերպում՝ !!0 → false, !!"տեքստ" → true:
5. Արժեքները Հիշողության Մեջ
JavaScript-ում փոփոխականների հիշողության կառավարումը կախված է տիպից․
5.1 Պրիմիտիվ Տիպեր (Արժեքային)
- Պահվում են ստեկում (Stack)՝ որպես արժեքներ
- Յուրաքանչյուր փոփոխական ունի իր անկախ պատճենը
let a = 10;
let b = a; // Պատճենվում է արժեքը
a = 20;
console.log(b); // 10 (չի փոխվում)
5.2 Օբյեկտ Տիպեր (Հղումային)
- Պահվում են հիպում (Heap)՝ հղումներով
- Փոփոխականները պահում են հիշողության հասցե
let obj1 = { name: "Աննա" };
let obj2 = obj1; // Պատճենվում է հղումը
obj1.name = "Կարեն";
console.log(obj2.name); // "Կարեն" (փոխվում է)
6. Լավ Պրակտիկաներ
- Օգտագործեք === (ստրիկտ հավասարություն) ==-ի փոխարեն՝ խուսափելու տիպերի ավտո-փոխակերպումից։
- Ստուգեք NaN-ը isNaN() ֆունկցիայով։
- Օգտագործեք let և const փոփոխականների հայտարարման համար։