JavaScript-ի Հիմունքները
JavaScript-ը (JS) ծրագրավորման բարձր մակարդակի (high-level), դինամիկ (dynamic) և թարգմանվող (interpreted) լեզու է, որն առավելապես օգտագործվում է վեբ ծրագրավորման համար։ Այն սկզբնապես ստեղծվել է Netscape Navigator դիտարկչի համար 1995 թվականին Brendan Eich-ի կողմից։ Սակայն, այսօր JavaScript-ը լայնորեն կիրառվում է ինչպես front-end, այնպես էլ back-end ծրագրավորման մեջ՝ շնորհիվ Node.js-ի և տարբեր ֆրեյմվորքերի։
Ինչպիսի՞ ծրագրավորման լեզու է JavaScript-ը
JavaScript-ը դասվում է interpreted (թարգմանվող) լեզուների շարքին, ինչը նշանակում է, որ այն չի պահանջում նախնական կոմպիլյացիա՝ ի տարբերություն, օրինակ, C կամ Java-ի։
Այն բազմաֆունկցիոնալ (multi-paradigm) լեզու է, այսինքն՝ աջակցում է տարբեր ծրագրավորման ոճեր՝ ներառյալ օբյեկտակողմնորոշված (OOP), ֆունկցիոնալ (functional) և իրադարձությունների վրա հիմնված (event-driven) ծրագրավորումը։
JavaScript-ը հանդիսանում է կլիենտ-սերվերային (client-server) լեզու, այսինքն՝ այն կարող է աշխատել ինչպես բրաուզերի կողմից, այնպես էլ սերվերի վրա։
JavaScript-ի հիմնական սկզբունքները
1. Single-threaded և Asynchronous բնույթ
JavaScript-ը աշխատում է մեկ թելի վրա (single-threaded), ինչը նշանակում է, որ այն միաժամանակ կատարում է միայն մեկ գործողություն։ Սակայն, այն ունի asynchronous (ասինխրոն) հնարավորություններ, որոնք ապահովում են չխոչընդոտվող կատարման հոսք՝ օգտագործելով callback-ներ, Promises և async/await մեխանիզմները։
Օրինակ՝ setTimeout-ի օգտագործումը
console.log("Սկիզբ");
setTimeout(() => console.log("Timeout"), 2000);
console.log("Վերջ");
// Արդյունք: Սկիզբ → Վերջ → Timeout (2 վայրկյան հետո)
2. Dynamic Typing (Դինամիկ տիպավորում)
JavaScript-ում փոփոխականները չունեն ֆիքսված տվյալների տիպ՝ ինչը թույլ է տալիս տվյալների տիպերի հեշտ փոփոխություն։
Օրինակ՝
let x = 10; // x-ն թիվ է
x = "Hello"; // x-ն այժմ տող է
Այս հատկությունը կարող է հանգեցնել անսպասելի սխալների, ուստի JavaScript-ում օգտագործվում են TypeScript և այլ ստատիկ տիպավորման գործիքներ։
3. Prototype-Based Inheritance (Պրոտոտիպային ժառանգություն)
JavaScript-ում օբյեկտները ժառանգում են հատկություններ և մեթոդներ այլ օբյեկտներից՝ օգտագործելով prototype մեխանիզմը։
Օրինակ՝ պրոտոտիպային ժառանգություն
function Person(name) {
this.name = name;
}
Person.prototype.sayHello = function() {
console.log("Hello, my name is " + this.name);
};
let person1 = new Person("Aram");
person1.sayHello(); // "Hello, my name is Aram"
4. Garbage Collection (Ավտոմատ հիշողության կառավարում)
JavaScript-ը ավտոմատ կերպով մաքրում է չօգտագործվող հիշողությունը garbage collection ալգորիթմի միջոցով։
Օրինակ՝
let obj = { name: "John" };
obj = null; // Հիշողությունը ավտոմատ կազատվի
5. Event Loop (Իրադարձային ցիկլ)
JavaScript-ի Event Loop մեխանիզմը ապահովում է ասինխրոն գործողությունների կառավարում՝ թույլ տալով ծրագրին կատարել կոդ առանց «սառելու»։
Օրինակ՝ Event Loop
console.log("Start");
setTimeout(() => console.log("Timeout"), 0);
console.log("End");
// Output: Start → End → Timeout
Ինչպե՞ս է աշխատում JavaScript-ը
JavaScript-ը աշխատում է շարժիչների (engines) միջոցով, որոնք տարբեր դիտարկիչների հիմքում են։
- Google Chrome – V8 Engine (օգտագործվում է նաև Node.js-ում)
- Mozilla Firefox – SpiderMonkey
- Microsoft Edge – Chakra
Օրինակ՝ V8 շարժիչի աշխատանքի սխեմա
- JavaScript-ի կոդը նախ փոխակերպվում է Abstract Syntax Tree (AST)-ի։
- AST-ն անցնում է JIT (Just-In-Time) կոմպիլյացիայի, ինչի արդյունքում ստացվում է արդյունավետ բայթ-կոդ։
- V8-ն աշխատեցնում է ստացված կոդը և կառավարում է հիշողությունը։
JavaScript-ի Կարևոր Օգտագործման Ոլորտները
- Վեբ ծրագրավորում (Front-end) – React, Vue.js, Angular
- Սերվերային ծրագրավորում (Back-end) – Node.js
- Մոբայլ հավելվածներ – React Native, Ionic
- Խաղերի մշակում – Phaser.js, Three.js
- Մեքենայական ուսուցում – TensorFlow.js