Přejít na hlavní obsah

Jak funguje hoysting

Hoisting je koncept v programovacím jazyce JavaScript, což je proces přesunu oznámení proměnných a funkcí do horní části své viditelnosti před provedením kódu. To znamená, že i když je v kódu oznámíte na konkrétním místě, JavaScript tyto reklamy před provedením přenese nahoru.

Hoisting je interní operace interpreta JavaScriptu a není explicitně napsanou součástí kódu. Pochopení toho, jak hoisting funguje, vám však může pomoci vyhnout se některým potenciálním chybám a vytvořit srozumitelnější a podporovanější kód.

Hoisting se vztahuje na reklamy proměnných a funkcí, ale je zpracován různými způsoby. Proměnné deklarované pomocí klíčového slova var, stoupají nahoru oblasti viditelnosti, ale jejich inicializace zůstává na místě, což může vést k nežádoucímu chování. Funkce deklarované pomocí klíčového slova function, zcela stoupají nahoru oblasti viditelnosti, včetně jejich těla. To umožňuje vyvolat funkci před jejím skutečným oznámením v kódu.

Obecné pravidlo: oznámení proměnných a funkcí se zvednou do oblasti viditelnosti, ale jejich inicializace se nepohybuje.

V tomto článku se podíváme blíže na to, jak hoisting funguje pro proměnné a funkce, uvedeme příklady, které ilustrují jeho a body, které je třeba vzít v úvahu při psaní kódu. Také se podíváme na rozdíly mezi hoisting v var a v reklamách pomocí let a const, které byly představeny v moderních verzích JavaScriptu.

Co je hoisting?

Hoisting v programování JavaScriptu je proces, při kterém se všechny reklamy proměnných a funkcí před provedením kódu pohybují nahoru do oblasti viditelnosti. To znamená oslovovat proměnné a funkce před jejich skutečným oznámením v kódu.

Během hoisting se reklamy proměnných pomocí klíčových slov var, let a const pohybují na začátku oblasti viditelnosti, ale jejich hodnoty zůstávají neurčité až do okamžiku inicializace. Při hoisting budou reklamy funkcí, které jsou vytvořeny pomocí klíčového slova function, přesunuty na začátek oblasti viditelnosti a budou přístupné odkudkoli v oblasti viditelnosti.

Hoisting může vést k nepředvídatelným výsledkům a chybám, proto se doporučuje vždy před použitím deklarovat proměnné a funkce, aby nedošlo k záměně a nejednoznačnosti kódu.

Jak funguje hoisting v JavaScriptu

Během kompilace JavaScript kódu, interpret prohledá celý kód a nalezené reklamy přesune nahoru kódu před jeho skutečným provedením. To vám umožní používat proměnné a volat funkce před jejich oznámením.

Proces hoisting interpretem JavaScriptu si lze představit, jako by se všechny reklamy pohybovaly na samém začátku aktuálního kontextu výkonu.

Pro proměnné hoisting znamená, že proměnné lze použít před jejich skutečným oznámením. Proměnné však musí být stále deklarovány pomocí klíčového slova var, let nebo const v aktuálním kontextu provedení.

U funkcí hoisting znamená, že funkce mohou být vyvolány před jejich skutečným oznámením. Funkce oznámené pomocí reklamy funkce (function declaration) mohou být vyvolány kdekoli v kódu, včetně před jejich oznámením. Funkce deklarované pomocí výrazu funkce (function expression) mohou být vyvolány až po jejich oznámení.

Navzdory zvednutí oznámení proměnných a funkcí nahoru kódu však hoisting nezvyšuje inicializaci proměnných, jejich přiřazení hodnot a výrazů.

Hoisting může být užitečný, ale může také vést k chybám a nepředvídatelnému chování, zvláště pokud kód není napsán úhledně a zcela. Abyste se vyhnuli neočekávanému chování, doporučuje se vždy před použitím v kódu deklarovat proměnné a funkce.

Druhy hoisting

Existují dva hlavní druhy Hoisting ' a:

TypPopis
Hoisting proměnnýchProměnné deklarované pomocí klíčového slova var nebo let stoupají na začátek oblasti viditelnosti, ale jsou přiřazeny hodnotě undefined před skutečnou definicí.
Hoisting funkceFunkce oznámené pomocí klíčového slova function se také zvednou na začátek oblasti viditelnosti a mohou být vyvolány před jejich oznámením v kódu.

Kromě těchto základních druhů existuje také hoisting pomocí šipkových funkcí (arrow functions) a tříd (classes), ale na rozdíl od běžných funkcí a proměnných se nezvednou a nelze je vyvolat před oznámením.

Všechny druhy Hoisting ' a mohou způsobit zmatek a nejasné chování v kódu, takže je důležité mít na paměti tuto funkci JavaScriptu a používat ji opatrně.