Na základě populární poptávky spouštíme sérii Lekce JavaScriptu... Pokud jste odhodláni zvládnout JS, znamená to, že máte základní znalosti HTML a CSS, protože toto je základ, bez kterého je těžké pochopit, o čem se bude diskutovat.
Z naší strany se pokusím vysvětlit srozumitelným jazykem, ukázat na skutečných příkladech ze života, protože vše se učí ve srovnání.
Co je JavaScript, nebo jak porozumět tomu, za jakým účelem je při vývoji webu potřeba!
Žijeme ve světě, kde je všechno hmatatelné, realizujeme myšlenky, které se nám honí hlavou. Stavíme domy, auta, pohybujeme se pomocí různých zařízení. To znamená, že to, co můžeme dělat v reálném světě, si lze představit ve srovnání s HTML, kde funguje jako stavební materiál, základ, na kterém vše spočívá, a kdy Nápověda CSS zdobíme tento svět, děláme ho barevným, tak, jak bychom ho rádi viděli sami.
Pravděpodobně se ptáte, jestli nás obklopuje HTML a CSS, co je tedy JavaScript? Kde se to v našem světě projevuje.
Myslím, že to bude snazší vysvětlit na příkladu filmu od Garyho Pottera, myslím, že mnoho z vás to sledovalo a pochopí, o čem se bude diskutovat. Ze scénáře filmu víme, že Gary disponoval super schopnostmi, byl čarodějem a kouzelná hůlka mu v tom pomohla. Byla to kouzelná hůlka, která mu dala příležitost vytvořit magii na takové úrovni, jakou měl znalosti, aby byla jedinečná.
JavaScript je kouzelná hůlka, kterou má každý webový vývojář, ale jaké kouzlo s ním můžete vytvořit, závisí pouze na znalostech vývojáře, které vlastní. Ti, kteří zvládli daný jazyk, jsou kouzelníci a v pravdě dělají zázraky.
Jazyk JavaScript není kompletní bez komponent HTML a CSS. Mnoho programátorů zmiňuje tři jazyky, které tvoří „vrstvy“ webové stránky: HTML, CSS a JavaScript.
Html první hypertextový značkovací jazyk - poskytuje strukturální vrstvy expresivně organizující obsah stránky, jako je text, obrázky a další prvky.
Druhý, CSS(Kaskádové styly), formulář krásný design, vzhled a dojem z obsahu HTML.
A třetí - JavaScript–Přidává vrstvy chování, animuje webovou stránku, činí ji interaktivní, tj. Vytváří prvky pro interakci s návštěvníky.
Stručně řečeno, abyste zvládli jazyk JavaScript, musíte dobře rozumět HTML i CSS.
Programování se může zdát neuvěřitelnou magií mimo dosah pouhého smrtelníka. Většinu jeho konceptů však není těžké pochopit. JavaScript je pro začínající programátory docela přátelský, ale přesto je složitější než HTML nebo CSS, takže v této sérii lekcí zvládneme základní pojmy programování, abyste je mohli použít při psaní skriptů v JavaScriptu.
Seznámíte se s novými symboly () ,,; , (),!, naučíme se označení nových slov (var, null, else if), rozebereme pravidla interpunkce a syntaxi samotného jazyka a to vše za účelem fungování naší magie.
Materiál připravil Denis Gorelov, napište své komentáře a nezapomeňte tento materiál sdílet se svými přáteli.
- Překlad
Materiál, jehož překlad dnes zveřejňujeme, je věnován základům JavaScriptu a je určen začínajícím programátorům. Lze jej také považovat za malý odkaz na základní konstrukce JS. Zde konkrétně budeme hovořit o systému datových typů, o proměnných, o polích, o funkcích, o prototypech objektů a některých dalších vlastnostech jazyka.
Primitivní datové typy
JavaScript poskytuje následující primitivní datové typy: number, boolean, string, undefined, null. Hned je třeba poznamenat, že při práci s primitivními datovými typy, například s řetězcovými literály, budeme i bez provedení explicitní konverze mít přístup k jejich metodám a vlastnostem. Jde o to, že při pokusu o provedení takových operací jsou literály automaticky vybaveny příslušným obalovým objektem.UmbersČísla
V JavaScriptu existuje pouze jeden typ čísla - čísla s plovoucí desetinnou čárkou s dvojitou přesností. To vede k tomu, že výsledky hodnocení některých výrazů jsou aritmeticky nesprávné. Možná už víte, že v JS se hodnota výrazu 0,1 + 0,2 nerovná 0,3. Současně při práci s celými čísly nejsou takové problémy pozorovány, tj. 1 + 2 === 3.JavaScript má objekt Number, což je obálka objektu pro číselné hodnoty. Číselné objekty lze vytvořit buď pomocí příkazu jako var a = nové číslo (10), nebo se můžete spolehnout na výše popsané automatické chování systému. To zejména umožňuje vyvolat metody uložené v Number.prototype v číselných literálech:
(123) .toString (); // "123" (1,23) .toFixed (1); //"1.2 "
Existují globální funkce pro převod hodnot jiných typů na číselné typy. Jedná se o parseInt (), parseFloat () a konstrukci Number (), která v tomto případě funguje jako běžná funkce, která provádí převod typů:
ParseInt ("1") // 1 parseInt ("text") // NaN parseFloat ("1.234") //1.234 Number ("1") // 1 Number ("1.234") //1.234
Pokud se v průběhu operace s čísly získá něco, co není číslo (v průběhu některých výpočtů nebo při pokusu převést něco na číslo), JavaScript nevyvolá chybu, ale bude představovat výsledek takového operace jako hodnota NaN (Not-a-Number, not a number). Chcete -li zkontrolovat, zda je hodnota NaN, můžete použít funkci isNaN ().
Aritmetické operace JS funguje poměrně známým způsobem, ale všimněte si, že operátor + může provádět sčítání čísel i zřetězení řetězců.
1 + 1 //2 "1" + "1" //"11" 1 + "1" //"11"
TrŘetězce
Řetězce v JavaScriptu jsou sekvence znaků Unicode. Řetězcové literály se vytvářejí uzavřením textu, který má být uzavřen, ve dvojitých ("") nebo jednoduchých ("") uvozovkách. Jak již bylo zmíněno, při práci s řetězcovými literály se můžeme spolehnout na odpovídající obal objektu, jehož prototyp má mnoho užitečných metod, včetně substring (), indexOf (), concat ()."text" .substring (1,3) // ex "text" .indexOf ("x") // 2 "text" .concat ("end") // konec textu
Řetězce, stejně jako jiné primitivní hodnoty, jsou neměnné. Metoda concat () například nemění existující řetězec, ale vytvoří nový.
▍ Booleovské hodnoty
Booleovský datový typ v JS je reprezentován dvěma hodnotami- true a false. Jazyk může automaticky převádět různé hodnoty na booleovské datové typy. Takže false, kromě logické hodnoty false, jsou hodnoty null, undefined, "" (prázdný řetězec), 0 a NaN. Všechno ostatní, včetně jakýchkoli předmětů, je skutečnou hodnotou. Probíhá logické operace vše, co je považováno za pravdu, je převedeno na pravdu a vše, co je považováno za nepravdu, je převedeno na nepravdu. Podívejte se na následující příklad. V souladu s výše uvedenými zásadami bude prázdný řetězec převeden na hodnotu false a v důsledku spuštění tohoto kódu bude do konzoly odeslán řádek This is false.Nechť text = ""; if (text) (console.log ("This is true");) else (console.log ("This is false");)
Objekty
Objekty jsou dynamické struktury tvořené páry klíč – hodnota. Hodnoty mohou být primitivních datových typů, mohou to být objekty nebo funkce.Objekty se nejsnadněji vytvářejí pomocí syntaxe doslovného objektu:
Nechte obj = (zpráva: „Zpráva“, doSomething: function () ())
Vlastnosti objektu lze kdykoli číst, přidávat, upravovat a mazat. Postupujte takto:
- Vlastnosti čtení: object.name, object.
- Zápis dat do vlastností (pokud vlastnost, ke které se přistupuje, neexistuje, přidejte novou vlastnost pomocí zadaného klíče): object.name = value, object = value.
- Mazání vlastností: odstranit object.name, delete object.
Nechť obj = (); // vytvoření prázdného objektu obj.message = "Zpráva"; // přidat novou vlastnost obj.message = "Nová zpráva"; // upravit vlastnost delete object.message; // odebrat vlastnost
Objekty v jazyce jsou implementovány jako hashovací tabulky. Jednoduchou hashovací tabulku lze vytvořit pomocí příkazu Object.create (null):
Let french = Object.create (null); francouzsky ["yes"] = "oui"; francouzsky ["no"] = "non"; francouzsky ["ano"]; // "oui"
Pokud chcete, aby byl objekt neměnný, můžete použít příkaz Object.freeze ().
Chcete -li iterovat všechny vlastnosti objektu, můžete použít příkaz Object.keys ():
Funkce logProperty (název) (console.log (název); // název vlastnosti console.log (obj); // hodnota vlastnosti) Object.keys (obj) .forEach (logProperty);
▍Porovnávání hodnot primitivních typů a objektů
V praktická práce s primitivními hodnotami, jak již bylo zmíněno, je můžete vnímat jako objekty, které mají vlastnosti a metody, přestože to nejsou objekty. Primitivní hodnoty jsou neměnné; vnitřní struktura objektů se může měnit.Proměnné
V jazyce JavaScript lze proměnné deklarovat pomocí klíčových slov var, let a const.Při použití klíčového slova var můžete deklarovat proměnnou a v případě potřeby ji inicializovat nějakou hodnotou. Pokud proměnná není inicializována, její hodnota není definována. Proměnné deklarované pomocí klíčového slova var mají funkční rozsah.
Klíčové slovo let je velmi podobné varu, rozdíl je v tom, že proměnné deklarované pomocí klíčového slova let jsou blokovány.
Proměnné deklarované pomocí klíčového slova const mají také rozsah bloku, který, vzhledem k tomu, že hodnoty těchto proměnných nelze změnit, by bylo správnější nazývat je „konstanty“. Klíčové slovo const, které „zmrazí“ hodnotu proměnné deklarované pomocí ní, lze přirovnat k metodě Object.freeze (), která „zmrazí“ objekty.
Pokud je proměnná deklarována mimo jakoukoli funkci, její rozsah je globální.
Pole
Pole JavaScript jsou implementována pomocí objektů. V důsledku toho, když mluvíme o polích, ve skutečnosti diskutujeme o objektech, které vypadají jako pole. S prvky pole můžete pracovat pomocí jejich indexů. Číselné indexy jsou převedeny na řetězce a použity jako názvy pro přístup k hodnotám prvků pole. Například konstrukce podobná arr je podobná konstrukci jako arr ["1"] a obě umožní přístup ke stejné hodnotě: arr === arr ["1"]. Podle výše uvedeného je jednoduché pole deklarované příkazem let arr = ["A", "B", "C"] reprezentováno jako objekt podobný následujícímu:(„0“: „A“, „1“: „B“, „2“: „C“)
Odstranění prvků pole pomocí příkazu delete v něm zanechá „díry“. Abyste se tomuto problému vyhnuli, můžete použít příkaz splice (), který ale funguje pomalu, protože po odebrání prvku přesune zbývající prvky pole, ve skutečnosti je přesune na začátek pole, aby levá.
Nechť arr = ["A", "B", "C"]; odstranit arr; console.log (arr); // ["A", prázdné, "C"] console.log (arr.length); // 3
Metody pole usnadňují implementaci datových struktur, jako jsou zásobníky a fronty:
// stack let stack =; stack.push (1); // stack.push (2); // let last = stack.pop (); // console.log (last); // 2 // queue let queue =; queue.push (1); // queue.push (2); // let first = queue.shift (); // console.log (first); // jeden
Funkce
Funkce v JavaScriptu jsou objekty. Funkce lze přiřadit proměnným, ukládat do objektů nebo polí, předávat jako argumenty jiným funkcím a vracet z jiných funkcí.Existují tři způsoby, jak deklarovat funkce:
- Klasické prohlášení o funkci (prohlášení o funkci nebo prohlášení o funkci).
- Používání funkčních výrazů, nazývaných také funkční literály.
- Pomocí syntaxe funkce Arrow.
Declaration Deklarace klasické funkce
S tímto přístupem k deklarování funkcí platí následující pravidla:- První klíčové slovo na řádku deklarace funkce je funkce.
- Funkci musíte přiřadit název.
- Funkci lze použít v kódu před jejím prohlášením zvýšením deklarace funkce na začátek rozsahu, ve kterém je deklarována.
Funkce doSomething () ()
▍Funkční výrazy
Při používání funkčních výrazů zvažte následující:- Klíčové slovo funkce již není prvním slovem na řádku deklarace funkce.
- Název funkce je volitelný. Lze použít jak anonymní, tak pojmenované funkční výrazy.
- Příkazy pro volání takových funkcí musí následovat příkazy pro jejich deklaraci.
- Takovou funkci lze vyvolat bezprostředně po deklaraci pomocí syntaxe IIFE (Immediately Invoked Function Expression).
Nechte doSomething = funkce () ()
▍Šipkové funkce
Šipkové funkce jsou v podstatě „syntaktický cukr“ pro vytváření výrazů anonymních funkcí. Je třeba poznamenat, že tyto funkce nemají své vlastní entity toto a argumenty. Deklarace funkce šipky vypadá takto:Nechť doSomething = () => ();
AysZpůsoby volání funkcí
Funkce lze volat různými způsoby.Normální volání funkce
doSomething (argumenty)Volání funkce jako objektové metody
theObject.doSomething (argumenty) theObject ["doSomething"] (argumenty)Volání funkce jako konstruktoru
new doSomething (argumenty)Volání funkce pomocí metody apply ()
doSomething.apply (theObject,) doSomething.call (theObject, argumenty)Volání funkce pomocí metody bind ()
nechte doSomethingWithObject = doSomething.bind (theObject); doSomethingWithObject ();Funkce lze volat s více nebo méně argumenty, než je počet parametrů, které byly zadány při jejich deklaraci. Během provozu funkce budou argumenty „navíc“ jednoduše ignorovány (přestože k nim funkce bude mít přístup), chybějící parametry obdrží hodnotu nedefinovanou.
Funkce mají dva pseudoparametry: this a arguments.
KeywordToto klíčové slovo
Toto klíčové slovo představuje kontext funkce. Hodnota, na kterou ukazuje, závisí na tom, jak byla funkce volána. Zde jsou významy tohoto klíčového slova v závislosti na způsobu volání funkce (s příklady kódu, jejichž konstrukce jsou zde použity, jsou popsány výše):- Běžné volání funkce je okno / nedefinováno.
- Volání funkce jako metody objektu - theObject.
- Volání funkce jako konstruktoru je nový objekt.
- Volání funkce pomocí metody apply () - theObject.
- Volání funkce pomocí metody bind () - theObject.
Klíčové slovo Argumenty
Klíčové slovo argumenty je pseudo parametr, který umožňuje přístup ke všem argumentům použitým ve volání funkce. Vypadá to jako pole, ale není to pole. Zejména nemá žádné metody pole.Funkce RedukceToSum (celkem, hodnota) (návrat celkem + hodnota;) součet funkcí () (ať args = Array.prototype.slice.call (argumenty); návrat args.reduce (ReduToSum, 0);) součet (1,2, 3);
Alternativou ke klíčovému slovu argumenty je nová syntaxe pro zbývající parametry. V následujícím příkladu je args pole obsahující vše, co je předáno funkci při volání.
Součet funkcí (... args) (návrat args.reduce (ReduToSum, 0);)
StatementVrácení zboží
Funkce bez příkazu return vrátí undefined. Při použití klíčového slova return věnujte pozornost tomu, jak funguje mechanismus automatického vkládání středníků. Následující funkce například nevrátí prázdný objekt, ale nedefinovanou hodnotu:Funkce getObject () (return ()) getObject ()
Chcete -li se tomuto problému vyhnout, umístěte úvodní složenou závorku na stejný řádek jako příkaz return:
Funkce getObject () (return ())
Dynamické psaní
JavaScript je dynamicky psaný jazyk. To znamená, že konkrétní hodnoty mají typy, ale proměnné nikoli. Během provádění programu lze hodnoty zapisovat do stejné proměnné odlišné typy... Zde je příklad funkce, která pracuje s hodnotami různých typů:Protokol funkcí (hodnota) (console.log (hodnota);) log (1); log („text“); log ((zpráva: "text"));
Chcete -li zjistit typ dat uložených v proměnné, můžete použít operátor typeof ():
Nechť n = 1; typeof (n); // číslo let s = "text"; typ (y); // řetězec nech fn = function () (); typeof (fn); // funkce
Model spouštění s jedním vláknem
Modul JavaScript runtime má jedno vlákno. To je zejména vyjádřeno v nemožnosti současného provádění dvou funkcí (pokud neberete v úvahu možnosti asynchronního spouštění kódu, kterých se zde nedotýkáme). Modul runtime má takzvanou frontu událostí, která ukládá seznam úloh, které mají být zpracovány. Výsledkem je, že schéma spouštění JS s jedním vláknem nemá problém se zablokováním prostředků, takže není potřeba zamykací mechanismus. Kód, který skončí ve frontě událostí, se však musí spustit rychle. Pokud přetížíte hlavní vlákno v aplikaci prohlížeče tvrdou prací, stránka aplikace nebude reagovat na vstup uživatele a prohlížeč nabídne zavření této stránky.Zpracování výjimek
JavaScript má mechanismus pro zpracování výjimek. Funguje podle principu, který je u takových mechanismů zcela obvyklý: kód, který může způsobit chybu, je sestaven pomocí konstrukce try / catch. Samotný kód je v try bloku, chyby jsou zpracovány v catch bloku.Je zajímavé poznamenat, že někdy JavaScript nevydává chybové zprávy, když dojde k neobvyklé situaci. Důvodem je skutečnost, že JS před přijetím standardu ECMAScript 3 nevrhal chyby.
Například v následujícím fragmentu kódu se pokus o úpravu zmrazeného objektu nezdaří, ale nebude vyvolána žádná výjimka.
Nechť obj = Object.freeze (()); obj.message = "text";
Některé z „tichých“ chyb JS se projevují v přísném režimu, můžete je povolit pomocí konstrukce „použít přísné“; ...
Prototypový systém
Mechanismy JS, jako jsou funkce konstruktoru, příkaz Object.create () a klíčové slovo class, jsou založeny na prototypovém systému.Zvažte následující příklad:
Nechť service = (doSomething: function () ()) nech specializovanou službu = Object.create (služba); console.log (specializovaná služba .__ proto__ === služba); // skutečný
Zde byl pomocí příkazu Object.create () vytvořen objekt specialiservice, jehož prototypem měl být objekt služby. V důsledku toho se ukazuje, že metodu doSomething () lze volat přístupem k objektu dedicatedService. To také znamená, že vlastnost __proto__ objektu specialiservice ukazuje na objekt služby.
Pojďme nyní vytvořit podobný objekt pomocí klíčového slova class:
Třída Service (doSomething () ()) třída SpecializedService rozšiřuje Service () let specializService = new SpecializedService (); console.log (dedicatedService .__ proto__ === SpecializedService.prototype);
Metody deklarované ve třídě Service budou přidány do objektu Service.prototype. Instance třídy Service budou mít stejný prototyp (Service.prototype). Všechny instance budou delegovat volání metod na objekt Service.prototype. V důsledku toho se ukazuje, že metody jsou deklarovány pouze jednou, v Service.prototype, poté jsou „zděděny“ všemi instancemi třídy.
▍ Prototypový řetězec
Objekty mohou být „dědici“ jiných objektů. Každý objekt má prototyp, jehož metody má k dispozici. Pokud se pokusíte získat přístup k vlastnosti, která není v samotném objektu, JavaScript jej začne hledat v řetězci prototypů. Tento proces bude pokračovat, dokud nebude vlastnost nalezena, nebo dokud hledání nedosáhne konce řetězce.O funkčním programování v JavaScriptu
V Funkce JavaScriptu jsou objekty první třídy, jazyk podporuje mechanismus uzávěrů. To připravuje cestu pro implementaci technik funkčního programování v JS. Zejména mluvíme o možnosti využití funkcí vyššího řádu.Uzavření je interní funkce, která má přístup k proměnným deklarovaným uvnitř nadřazené funkce, a to i poté, co byla nadřazená funkce spuštěna.
Funkce vyššího řádu je funkce, která může brát jiné funkce jako argumenty, návratové funkce nebo obojí.
Funkčním programováním v JS se věnuje řada publikací. Pokud vás to zajímá - zde je několik materiálů na toto téma, věnovaných
Kurz syntaxe JavaScriptu
Než začnete číst Jazykový kurz JavaScript musíte o tom vědět.
Bude velkým přínosem při učení se syntaxi JavaScriptu, pokud již znáte programovací jazyk, jako je PHP, C nebo Pascal, a také rozumíte tomu, co je to proměnná, datový typ, funkce nebo pole.
Pokud však nejste obeznámeni s programovacími jazyky, neměli byste si s tím dělat starosti JavaScript tutorial právě navrženo pro ty, kteří se začínají učit programovat poprvé.
JavaScript (JavaScript) Je programovací jazyk na straně klienta, pomocí kterého můžete ovládat prvky stránky HTML (značky HTML) a webový prohlížeč, přimět je k pohybu, reagovat na různé události (kliknutí myší, stisknutí kláves), vytvářet mnoho zajímavých programů (skriptů): testy , animace, fotogalerie (například jako ve Vkontakte), hry a mnoho dalšího.
Jak se učí JavaScript
Studie Jazyk JavaScript je obvykle rozdělen do čtyř fází:
1. Zvládnutí syntaxe JavaScriptu (tento návod),
2. Studium DOM a BOM,
3. Správa modelu DOM a kusovníku pomocí JavaScriptu,
4. Učení různých knihoven JavaScriptu. jQuery- nejoblíbenější na tento moment knihovna (Výukový program jQuery by se měl na tomto webu objevit koncem roku 2015).
DOM je objektový model dokumentu. Díky technologii DOM začínají značky HTML stránek představovat strom objektů a každý objekt v tomto stromu má svou vlastní jedinečnou adresu. Jazyk JavaScript odkazující na tuto adresu může přistupovat k té či oné značce HTML a ovládat ji (měnit barvu, velikost, pozici atd.).
Kusovník je model dokumentu založený na prohlížeči. Struktura je stejná jako u DOM, pouze místo objektů stránky HTML existují objekty prohlížeče: okno prohlížeče, velikosti obrazovky prohlížeče, historie návštěv, stavový řádek atd.
Po prostudování modelu DOM a kusovníku začnou vytvářet více či méně složité skripty JavaScript, které interagují se stránkou a prohlížečem.
Poté se s trochou známosti naučí nějakou knihovnu JavaScript, například jQuery, díky ní můžete vytvářet stejné programy jako v JavaScriptu, jen mnohem rychleji a efektivněji.
Někteří webmasteři se jQuery začínají učit hned, předchozí tři kroky přeskočí, ale nedoporučuji to dělat, protože v každém případě musíte porozumět syntaxi JavaScriptu a znát objekty DOM / BOM, jejich vlastnosti, metody a účely.
Jaké programy lze psát pomocí JavaScriptu
S pomocí můžete vytvořit mnoho zajímavých programů (skriptů):
- můžete vytvářet skripty, které změní prvky stránky webu nebo jejich umístění kliknutím na toto nebo ono tlačítko,
- můžete vytvářet animace,
- manipulovat s formuláři, například kontrolovat správnost údajů zadaných uživatelem,
- vytvořit různé testy, například typ zkoušky (školní zkoušky) a okamžitě získat výsledek,
- díky kusovníku můžete zjistit vlastnosti prohlížeče a počítače uživatele, který navštívil váš web, což vám umožňuje vytvářet různé čítače návštěv,
- pomocí JavaScriptu můžete dokonce vytvářet hry, karikatury a mnoho dalších zajímavých a užitečných programů.
Jaký je účel tohoto tutoriálu k JavaScriptu?
Účel tohoto JavaScriptové knihy je tě vzdělávat Základy syntaxe JavaScriptu, představit programování a koncepty, jako jsou proměnné, datové typy, operace, operátory větví, funkce, smyčky, pole, objekty atd. To vše najdete v jiných programovacích jazycích, takže jakmile zvládnete JavaScript, bude pro vás mnohem snazší naučit se další jazyky, jako je PHP, C ++ nebo Python.
Struktura výukového programu JavaScript
V JavaScript tutorial, budou probrána následující témata a lekce.
JavaScript - vstupuje do hry, když potřebujeme provést nějakou akci na straně klienta, který přistoupil na naši webovou stránku.
JavaScript může upravovat webovou stránku bez kontaktu se serverem, ověřovat vstupní hodnoty uživatelů a provádět jakékoli další operace.
Tento článek shromáždil základy, abyste mohli začít používat JavaScript.
Vložení skriptu přímo do kódu stránky
Kód JS můžete vložit přímo do stránky.
Odebrání kódu do samostatného souboru
Lze vyjmout JavaScriptový kód na externí soubor a použijte na něj odkaz na stránce
V tomto případě je vyžadována uzavírací značka.
Nejlepší je vložit skripty před uzavírací značku