April 15
JavaScript asoslari
Hozirgi kunga kelib barcha browserlar uchun eng optimal (dynamic) til bolib qolgan js tarixi va uning ichiga birma bir kirib boramiz :)
JavaScript (JS) – bu:
- High-level (yuqori darajadagi) dasturlash tili.
- Dinamik tipga ega –
var a = 5;
→a
har qanday turdagi qiymatga aylanishi mumkin. - Interpreted (tushuntiriluvchi) til — ammo zamonaviy brauzerlar uni JIT (Just-In-Time) orqali kompilyatsiya qiladi.
- Single-threaded – bitta ipda ishlaydi, lekin asinxronlikni (callback, promise, async/await) qo‘llab-quvvatlaydi.
JavaScript tarixi (pot-kapot tarixi) :
1995 – Brendan Eich Netscape brauzeri uchun 10 kunda JS'ni yaratdi.
- Dastlab nomi Mocha, keyin LiveScript, so‘ngra JavaScript bo‘ldi (Java’ga hech aloqasi yo‘q – bu marketing uchun bo‘lgan).
- Internetning interaktiv bo‘lishi uchun yaratilgan.
1997 – JS standarti ECMAScript (ES) nomi ostida paydo bo‘ldi.
- ES3 – 1999
- ES5 – 2009 (strict mode)
- ES6 / ES2015 – 2015 (let/const, arrow functions, classes, promises, modules)
Hozirgi JS:
- Node.js orqali serverda ishlaydi.
- Electron, React Native orqali desktop va mobil ilovalar yaratiladi.
- Typescript – JS ustiga typed qatlam.
JS qanday ishlaydi?
High-level tilda yozilgan kod brauzer yoki Node.js orqali quyidagicha ishlaydi:
- Parsing: Kodni AST (Abstract Syntax Tree) ga aylantiradi.
- Compilation: V8 (Google) yoki boshqa engine uni JIT (Just-in-time) orqali mashina kodga o‘giradi.
- Execution: Mashina kodi ishlaydi.
JS Engine misol:
Compilation va Interpretation
- Compiler – butun kodni oldindan mashina tiliga aylantiradi.
- Interpreter – kodni qatorma-qator bajaradi.
Event Loop, Call Stack, Microtask vs Macrotask
Call Stack:
Event Loop:
Macrotask Queue:
Microtask Queue:
Microtasks har doim Macrotasksdan oldin bajariladi.
console.log('1');
setTimeout(() => { console.log('2'); }, 0);
Promise.resolve().then(() => { console.log('3'); });
console.log('4');
1 4 3 <— microtask 2 <— macrotask