JavaScript -ը
JavaScript -ի հիմունքները
JavaScript-ը (JS) ծրագրավորման բարձր մակարդակի (high-level), դինամիկ (dynamic) և թարգմանվող (interpreted) լեզու է, որն առավելապես օգտագործվում է վեբ ծրագրավորման համար։ Այն սկզբնապես ստեղծվել է Netscape Navigator դիտարկչի համար 1995 թվականին Brendan Eich-ի կողմից։ Սակայն, այսօր JavaScript-ը լայնորեն կիրառվում է ինչպես front-end, այնպես էլ back-end ծրագրավորման մեջ՝ շնորհիվ Node.js-ի և տարբեր ֆրեյմվորքերի։
JavaScript-ը դասվում է interpreted (թարգմանվող) լեզուների շարքին, ինչը նշանակում է, որ այն չի պահանջում նախնական կոմպիլյացիա՝ ի տարբերություն, օրինակ, C կամ Java-ի։
Այն բազմաֆունկցիոնալ (multi-paradigm) լեզու է, այսինքն՝ աջակցում է տարբեր ծրագրավորման ոճեր՝ ներառյալ օբյեկտակողմնորոշված (OOP), ֆունկցիոնալ (functional) և իրադարձությունների վրա հիմնված (event-driven) ծրագրավորումը։
JavaScript-ը հանդիսանում է կլիենտ-սերվերային (client-server) լեզու, այսինքն՝ այն կարող է աշխատել ինչպես բրաուզերի կողմից, այնպես էլ սերվերի վրա։
JavaScript-ը աշխատում է մեկ թելի վրա (single-threaded), ինչը նշանակում է, որ այն միաժամանակ կատարում է միայն մեկ գործողություն։ Սակայն, այն ունի asynchronous (ասինխրոն) հնարավորություններ, որոնք ապահովում են չխոչընդոտվող կատարման հոսք՝ օգտագործելով callback-ներ, Promises և async/await մեխանիզմները։
Օրինակ՝ setTimeout-ի օգտագործումը
console.log("Սկիզբ");
setTimeout(() => console.log("Timeout"), 2000);
console.log("Վերջ");
// Արդյունք: Սկիզբ → Վերջ → Timeout (2 վայրկյան հետո)
JavaScript-ում փոփոխականները չունեն ֆիքսված տվյալների տիպ՝ ինչը թույլ է տալիս տվյալների տիպերի հեշտ փոփոխություն։
Օրինակ՝
let x = 10; // x-ն թիվ է
x = "Hello"; // x-ն այժմ տող է
Այս հատկությունը կարող է հանգեցնել անսպասելի սխալների, ուստի JavaScript-ում օգտագործվում են TypeScript և այլ ստատիկ տիպավորման գործիքներ։
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"
JavaScript-ը ավտոմատ կերպով մաքրում է չօգտագործվող հիշողությունը garbage collection ալգորիթմի միջոցով։
Օրինակ՝
let obj = { name: "John" };
obj = null; // Հիշողությունը ավտոմատ կազատվի
JavaScript-ի Event Loop մեխանիզմը ապահովում է ասինխրոն գործողությունների կառավարում՝ թույլ տալով ծրագրին կատարել կոդ առանց «սառելու»։
Օրինակ՝ Event Loop
console.log("Start");
setTimeout(() => console.log("Timeout"), 0);
console.log("End");
// Output: Start → End → Timeout
JavaScript-ը աշխատում է շարժիչների (engines) միջոցով, որոնք տարբեր դիտարկիչների հիմքում են։