Počítače nemôžu v skutočnosti spustiť kód, ktorý napíšete JavaScript (alebo akýkoľvek iný jazyk v tejto veci). Počítače môžu spúšťať iba strojový kód. Strojový kód, ktorý môže konkrétny počítač spustiť, je definovaný v procesore, ktorý bude tieto príkazy spúšťať, a môže sa líšiť pre rôzne procesory.
Je zrejmé, písanie strojového kódu bolo pre ľudí ťažké (je 125 príkazom na pridanie alebo je to 126 alebo možno 27). Aby sa tento problém obišiel, vytvorili sa tzv. Jazyky zhromaždenia. Tieto jazyky používali pre príkazy zreteľnejšie názvy (napríklad ADD pre pridávanie), a tak si nemuseli pamätať presné strojové kódy. Jazyky zhromaždenia majú stále vzťah jedna ku jednej s konkrétnym procesorom a strojovým kódom, do ktorého počítač tieto príkazy prevádza.
Zostavovacie jazyky sa musia kompilovať alebo interpretovať
Veľmi skoro sa zistilo, že je ľahšie písať jazyky boli potrebné a že samotný počítač by sa mohol použiť na preklad tých do inštrukcií strojového kódu, ktorým počítač skutočne rozumie. Pri tomto preklade bolo možné zvoliť dva prístupy a vybrali sa obe alternatívy (jeden alebo druhý sa použije v závislosti od používaného jazyka a miesta, kde sa používa).
Kompilovaný jazyk je taký, v ktorom po napísaní programu odovzdáte kód pomocou programu s názvom a prekladač a ktorá vytvorí verziu programu strojového kódu. Ak chcete potom spustiť program, zavolajte iba verziu strojového kódu. Ak vykonáte zmeny v programe, musíte ho pred testovaním zmeneného kódu prekompilovať.
Interpretovaný jazyk je jazyk, v ktorom sa pokyny prevádzajú z toho, čo ste napísali do strojového kódu pri spustení programu. Interpretovaný jazyk v podstate získa inštrukciu zo zdrojového kódu programu, prevedie ju na stroj spustí tento strojový kód a potom uchopí nasledujúcu inštrukciu od zdroja, aby zopakovala proces.
Dva varianty prekladu a tlmočenia
Jeden variant používa dvojfázový proces. Pri tomto variante sa zdroj vášho programu nezostavuje priamo do strojového kódu, ale namiesto toho sa prevádza na jazyk podobný zostaveniu, ktorý je stále nezávislý od konkrétneho procesor. Ak chcete spustiť kód, potom spracuje kompilovaný kód prostredníctvom tlmočníka špecifického pre procesor, aby získal strojový kód vhodný pre tento procesor. Tento prístup má mnoho výhod kompilácie pri zachovaní nezávislosti procesora, pretože rovnaký kompilovaný kód môže interpretovať mnoho rôznych procesorov. Java je jeden jazyk, ktorý často používa tento variant.
Druhý variant sa nazýva kompilátor Just in Time (alebo JIT). Pri tomto prístupe kompilátor v skutočnosti nespustíte po napísaní kódu. Namiesto toho sa to stane automaticky pri spustení kódu. Pomocou kompilátora Just in Time nie je kód interpretovaný príkazom vyhlásenie, je zostavený všetko v jednom choďte zakaždým, keď sa volá spustenie, a potom sa získa kompilovaná verzia, ktorú práve vytvorila spustiť. Tento prístup spôsobuje, že kód vyzerá veľmi podobne, ako sa interpretuje, s výnimkou toho, že namiesto chýb sa vyskytujú iba pri vyhlásení s príponou je dosiahnutá chyba, akékoľvek chyby zistené kompilátorom nebudú mať za následok spustenie žiadneho z kódov namiesto toho, aby bol všetok kód až do tohto bodu spustený spustiť. PHP je príkladom jazyka, ktorý sa obvykle kompiluje práve včas.
Je JavaScript skompilovaný alebo interpretovaný?
Takže teraz vieme, čo znamená interpretovaný kód a zostavený kód, preto musíme zodpovedať otázku, čo to má spoločné s jazykom JavaScript? V závislosti od toho, kde presne spustíte JavaScript, sa môže kód zostaviť alebo interpretovať alebo použiť niektorú z ďalších dvoch uvedených variantov. Väčšinu času stespustenie JavaScriptu vo webovom prehliadači a tam sa zvyčajne interpretuje JavaScript.
Tlmočené jazyky sú zvyčajne pomalšie ako kompilované jazyky. Existujú dva dôvody. Po prvé, kód, ktorý sa má interpretovať, sa musí interpretovať skôr, ako sa dá spustiť, a po druhé, že aby sa to stalo zakaždým, keď sa má príkaz spustiť (nielen pri každom spustení JavaScriptu, ale aj v prípade, že je v ňom) slučka potom je potrebné to urobiť vždy okolo slučky). To znamená, že kód napísaný v jazyku JavaScript sa spustí pomalšie ako kód napísaný v mnohých ďalších jazykoch.
Ako nám to vie pomôcť, keď je JavaScript jediný jazyk, ktorý máme k dispozícii pre všetky webové prehliadače? Samotný interpret jazyka JavaScript, ktorý je zabudovaný do webového prehľadávača, nie je zapísaný v jazyku JavaScript. Namiesto toho je napísaný v inom jazyku, ktorý bol potom zostavený. To znamená, že môžete urýchliť chod JavaScriptu, ak môžete využiť všetky príkazy, ktoré poskytuje JavaScript a ktoré vám umožňujú vyložiť úlohu do samotného nástroja JavaScript.
Príklady rýchlejšieho spúšťania JavaScriptu
Príkladom je to, že niektoré, ale nie všetky prehliadače, implementovali metódu document.getElementsByClassName () v stroji JavaScript, zatiaľ čo iné ju ešte musia urobiť. Ak potrebujeme túto konkrétnu funkciu, dokážeme rýchlejšie spustiť kód v tých prehliadačoch, v ktorých ho poskytuje skript JavaScript pomocou funkcie aby sme zistili, či táto metóda už existuje, a vytvoríme si vlastnú verziu tohto kódu v JavaScripte iba v prípade, že ho nástroj JavaScript neposkytuje us. Ak stroj JavaScript poskytuje túto funkciu, mal by bežať rýchlejšie, ak ju použijeme namiesto spustenia našej vlastnej verzie napísanej v jazyku JavaScript. To isté platí pre akékoľvek spracovanie, ktoré nám modul JavaScript umožňuje priamo zavolať.
Existujú aj prípady, keď JavaScript poskytuje viacero spôsobov, ako podať rovnakú žiadosť. V týchto prípadoch môže byť jeden zo spôsobov prístupu k informáciám špecifickejší ako druhý. Napríklad document.getElementsByTagName ('table') [0] .tBodies a document.getElementsByTagName ('table') [0] .getElementsByTagName ('tbody') načítať rovnaký zoznam uzlov tbody v prvej tabuľke na webovej stránke, ale prvý z nich je špecifický príkaz na načítanie tagy tbody, kde druhý identifikuje, že načítame tagy tbody v parametri a ďalšie hodnoty možno nahradiť, aby sa získali ďalšie tagy. Vo väčšine prehliadačov bude kratšia a konkrétnejšia varianta kódu bežať rýchlejšie (v niektorých prípadoch) oveľa rýchlejšie) ako pri druhom variante, a preto je rozumné používať kratšie a konkrétnejšie verzia. Tiež uľahčuje čítanie a údržbu kódu.
Teraz v mnohých z týchto prípadov bude skutočný rozdiel v čase spracovania veľmi malý a bude iba vtedy pridáte veľa takýchto kódových volieb naraz, aby ste zistili výrazný rozdiel v dobe, po ktorú kód trvá spustiť. Je pomerne zriedkavé, že ak zmeníte svoj kód tak, aby bežal rýchlejšie, kód sa výrazne predĺži alebo bude ťažšie udržiavať a opak bude často platiť. Ďalšou výhodou je, že sa môžu vytvoriť budúce verzie nástrojov JavaScript, ktoré dokonca urýchlia konkrétnejší variant ďalej, takže použitie konkrétneho variantu môže znamenať, že váš kód bude v budúcnosti bežať rýchlejšie, bez toho aby ste museli nič meniť.