Co jsou uzávěry v JavaScriptu a jak fungují?



Uzávěry v JavaScriptu se vytvářejí pokaždé, když je vytvořena funkce, v době vytvoření funkce. Poskytuje lepší kontrolu nad kódem při jejich používání.

je funkčně orientovaný jazyk, který uživateli poskytuje velkou svobodu. Funkci můžete vytvořit dynamicky, zkopírovat ji do jiné proměnné nebo předat jako argument jiné funkci a volat později z jiného místa. Uzávěry v JavaScriptu se vytvářejí pokaždé, když je vytvořena funkce, v době vytvoření funkce. V tomto článku pochopíme uzávěry v následujícím pořadí:

Jak převést dvojité na int

Úvod do uzávěrů v JavaScriptu

Uzávěr je kombinace a funkce svázaný s odkazy na jeho okolní stav, tj. lexikální prostředí. Jinými slovy, uzávěr vám poskytuje přístup z vnitřní funkce do rozsahu vnější funkce.





kodér - uzávěry v javascript - edureka

Většina vývojářů používá uzavření v JavaScriptu vědomě nebo nevědomě. Poskytuje lepší kontrolu nad kódem při jejich používání. Je to také nejčastěji kladená otázka během kteréhokoli .



Příklad:

funkce foo () {var x = 10 funkce vnitřní () {návrat x} návrat vnitřní} var get_func_inner = foo () console.log (get_func_inner ()) console.log (get_func_inner ()) console.log (get_func_inner ())

Výstup:

10
10
10



Zde máte přístup k proměnná x, který je definován ve funkci foo () prostřednictvím funkce inner (), protože později zachovává řetězec rozsahu uzavírací funkce v době provádění uzavírací funkce. Vnitřní funkce tedy zná hodnotu x prostřednictvím řetězce rozsahu. Takto můžete používat uzávěry v JavaScriptu.

Praktické uzávěry

Uzávěry vám umožňují přidružit lexikální prostředí k funkci, která na těchto datech pracuje. To má zjevné paralely objektově orientované programování , kde nám objekty umožňují přidružit vlastnosti objektu k jedné nebo více metodám.

V důsledku toho můžete použít uzávěr kdekoli, kde byste normálně mohli použít objekt pouze s jedinou metodou.

Příklad:

funkce makeSizer (size) {návratová funkce () {document.body.style.fontSize = size + 'px'}} var size12 = makeSizer (12) var size14 = makeSizer (14) var size16 = makeSizer (16)

Výše uvedený příklad je obecně připojen jako zpětné volání: jedna funkce, která je spuštěna v reakci na událost.

Řetěz rozsahu

Uzávěry v JavaScriptu mají tři obory, například:

  • Místní rozsah
  • Rozsah vnějších funkcí
  • Globální rozsah

Běžnou chybou není uvědomění si, že v případě, že vnější funkce je sama o sobě vnořenou funkcí, přístup k rozsahu vnější funkce zahrnuje uzavírající rozsah vnější funkce, čímž se efektivně vytvoří řetězec rozsahů funkcí.

// globální rozsah var x = 10 funkce součet (a) {návratová funkce (b) {návratová funkce (c) {// vnější funkce návratová funkce (d) {// místní rozsah návrat a + b + c + d + x}}}} console.log (sum (1) (2) (3) (4)) // protokol 20

Lze jej také psát bez anonymních funkcí:

// globální rozsah var x = 10 funkce součet (a) {návratová funkce součet2 (b) {návratová funkce součet3 (c) {// vnější funkce rozsahu návratová funkce součet4 (d) {// místní rozsah vrácení a + b + c + d + x}}}} var s = součet (1) var s1 = s (2) var s2 = s1 (3) var s3 = s2 (4) console.log (s3) // log 20

Ve výše uvedeném příkladu existuje řada vnořených funkcí, z nichž všechny mají přístup k vnějšímu rozsahu funkce. Můžete tedy říci, že uzávěry mají přístup ke všem oborům vnějších funkcí, ve kterých byly deklarovány.

co je znak v Javě

Uzavření ve smyčce

Uzávěry v JavaScriptu můžete použít k uložení anonymní funkce při každém indexu pole . Uveďme si příklad a podívejme se, jak se uzávěry používají ve smyčce.

Příklad:

funkce vnější () {var arr = [] var i pro (i = 0 i<3 i++) { // storing anonymus function arr[i] = function () { return i } } // returning the array. return arr } var get_arr = outer() console.log(get_arr[0]()) console.log(get_arr[1]()) console.log(get_arr[2]())

Výstup:

3
3
3
3

Tím jsme se dostali na konec našeho článku. Doufám, že jste pochopili, jak uzávěry v JavaScriptu fungují a jak se používají k lepší kontrole kódu.

Nyní, když víte o Closures v JavaScriptu, podívejte se na podle Edureka. Osvědčení o školení pro vývoj webových aplikací vám pomůže Naučte se, jak vytvářet působivé webové stránky pomocí HTML5, CSS3, Twitter Bootstrap 3, jQuery a Google API a jak je nasadit do služby Amazon Simple Storage Service (S3).

Máte na nás dotaz? Uveďte to v sekci komentářů v části „Uzávěry v JavaScriptu“ a my se vám ozveme.