JavaScript (JS) je dnes nejrozšířenějším programovacím jazykem na světě. Přestože jeho počátky byly skromné, vyvinul se v robustní, vysoce výkonnou a všudypřítomnou platformu. Tato dokumentace pokrývá technické základy, vnitřní architekturu, moderní standardy i budoucí směřování tohoto ekosystému.
Příběh JavaScriptu je fascinující ukázkou toho, jak dočasné řešení může ovládnout svět.
JavaScript není jen text v souboru; k jeho spuštění je zapotřebí komplexní prostředí.
Na rozdíl od GCC, které kompiluje kód předem, JS engine (V8, JavaScriptCore, SpiderMonkey) sleduje kód za běhu.
1. **Parser:** Převede kód na abstraktní syntaktický strom (AST). 2. **Interpreter (Ignition):** Rychle spustí kód. 3. **Optimalizátor (Turbofan):** Často spouštěné části kódu (hot spots) zkompiluje přímo do strojového kódu [[CPU|x86-64]].
Toto je nejdůležitější a často nejméně chápaná část JS. JavaScript je jednovláknový, ale díky asynchronitě působí jako paralelní.
Představte si JS jako číšníka (jedno vlákno), který přijme objednávku (požadavek na API) a předá ji do kuchyně (Web APIs). Nečeká u okýnka, ale jde obsloužit další stůl. Jakmile je jídlo hotové, zazvoní zvonek (Callback) a číšník ho doručí, když má volné ruce.
1. **Callbacks:** Starý způsob (tzv. "Callback Hell"). 2. **Promises (ES6):** Lepší správa stavu (pending, fulfilled, rejected). 3. **Async/Await (ES2017):** Syntaktický cukr nad Promises, který vypadá jako synchronní kód.
JavaScript používá dynamické a slabé typování.
Na rozdíl od C++ nebo Javy nepoužívá JS klasickou dědičnost, ale prototypy. Každý objekt má skrytý odkaz na jiný objekt (svůj prototyp), ze kterého „dědí“ vlastnosti.
const zvire = { dycha: true };
const pes = Object.create(zvire);
console.log(pes.dycha); // true (vlastnost nalezena v prototypu)
Od roku 2015 vychází nová verze standardu každý rok. Klíčové moderní funkce:
import a export.…).JS už dávno není jen v prohlížeči.
Umožňují spuštění JS na serveru. Node.js dominuje díky nezměrnému množství knihoven v registru npm, zatímco nové nástroje jako Bun se soustředí na extrémní rychlost.
Většina velkých firem (Google, Microsoft, Airbnb) dnes píše v TypeScriptu.
Nejčastější útok na JS. Útočník vloží svůj skript do stránky, kterou si prohlíží jiný uživatel, a ukradne mu přístupové údaje.
JS automaticky uvolňuje paměť. Pokud ale zapomenete odstranit posluchač události (event listener) nebo necháte globální proměnné, vznikají memory leaky (úniky paměti), které mohou zahltit i silný počítač.
JavaScript se stal „Assembly jazykem webu“. I když vznikají nové technologie jako WebAssembly (Wasm), které umožňují v prohlížeči spouštět kód v C++ nebo Rustu, JavaScript zůstane tím „lepidlem“, které vše spojuje.
—
Tip pro architekty: Při návrhu aplikace v JS se vždy ptejte: „Potřebuji na tohle skutečně framework?“ Často stačí nativní funkce prohlížeče, které jsou dnes neuvěřitelně výkonné.