🏷️ Փոփոխականներ (Variables)
JavaScript-ում փոփոխականներն օգտագործվում են տվյալներ պահելու համար։ Փոփոխականներ ստեղծելու համար օգտագործվում են հետևյալ երեք հիմնական հիմնաբառերը՝ var, let, const
1. var (ES5)
- Նախքան ES6-ը (2015) փոփոխական հայտարարելու համար օգտագործվում էր var:
- var-ը function-scoped է, այսինքն՝ այն հասանելի է միայն այն ֆունկցիայի ներսում, որտեղ հայտարարվել է։
- var-ը հոսթինգի (hoisting) է ենթարկվում։ Սա նշանակում է, որ այն բարձրացվում է կոդի սկզբում, բայց նրա արժեքը կլինի undefined, մինչև իրական հայտարարումը։
Օրինակ՝
console.log(name); // undefined
var name = 'John';
console.log(name); // 'John'
Ֆունկցիոնալ սկոուպ՝
function test() {
if (true) {
var x = 10;
}
console.log(x); // 10
}
test();
Խնդիրներ՝
- Հոսթինգը կարող է խառնել ծրագրի տրամաբանությունը։
- Բլոկի սահմանները չեն պահպանվում, ինչը կարող է խնդիրներ առաջացնել։
2. let (ES6)
- let-ը ներդրվել է ES6-ում (2015):
- let-ը block-scoped է, այսինքն՝ այն հասանելի է միայն այն բլոկում {} որտեղ հայտարարված է։
- let-ը հոսթինգի է ենթարկվում, բայց այն չի վերագրվում որպես undefined։
Օրինակ՝
console.log(name); // ReferenceError: Cannot access 'name' before initialization
let name = 'John';
console.log(name); // 'John'
Բլոկային սկոուպ՝
function test() {
if (true) {
let x = 10;
}
console.log(x); // ReferenceError: x is not defined
}
test();
Օգտագործման առավելություններ՝
- Ավելի հստակ սկոուպ
- Խուսափում է հոսթինգի խնդիրներից
3. const (ES6)
- const-ը նույնպես ներդրվել է ES6-ում (2015):
- const-ը block-scoped է՝ ինչպես let-ը։
- const-ով հայտարարված փոփոխականի արժեքը չի կարելի փոխել։
- Սակայն, եթե փոփոխականը օբյեկտ կամ զանգված է, ապա դրա պարունակությունը կարելի է փոխել։
Օրինակ՝
const name = 'John';
name = 'Jane'; // TypeError: Assignment to constant variable
Օբյեկտի պարունակության փոփոխություն՝
const person = { name: 'John' };
person.name = 'Jane'; // թույլատրելի է
console.log(person.name); // 'Jane'
Օգտագործման առավելություններ՝
- Արժեքը ֆիքսված է՝ խուսափելով պատահական վերագրումներից
- Ավելի անվտանգ և կանխատեսելի կոդ
Տարբերություններ ու համեմատություն
| Հատկանիշ | var | let | const |
| Բլոկի սահմանափակում | ❌ | ✅ | ✅ |
| Ֆունկցիայի սահմանափակում | ✅ | ✅ | ✅ |
| Վերագրում (Reassignment) | ✅ | ✅ | ✅ |
| Նախնական արժեքի պահանջ | ✅ | ✅ | ❌ |
| Նախնական արժեքի պահանջ | ❌ | ❌ | ✅ |
Հոսթինգի Մանրամասներ
var-ը բարձրացվում է, բայց ստանում է undefined արժեք։
let և const-ը բարձրացվում են, բայց արժեքը հասանելի չի լինի, քանի դեռ հայտարարված չէ՝ ստանալով ReferenceError:
console.log(a); // undefined
var a = 5;
console.log(b); // ReferenceError
let b = 5;
console.log(c); // ReferenceError
const c = 5;
Հոսթինգի մասին ավելի մանրամասն կարեղ ենք կարդալ այստեղ