je funkčne orientovaný jazyk, ktorý dáva používateľovi veľkú slobodu. Funkciu môžete vytvoriť dynamicky, skopírovať do inej premennej alebo odovzdať ako argument inej funkcii a volať z iného miesta neskôr. Uzávery v JavaScripte sa vytvárajú zakaždým, keď je vytvorená funkcia, v čase vytvorenia funkcie. V tomto článku budeme rozumieť uzávery v nasledujúcom poradí:
ako obrátiť číslo
Úvod do uzávierok v JavaScripte
Uzáver je kombináciou a funkcia zviazané s odkazmi na jeho okolitý stav, tj. lexikálne prostredie. Inými slovami, uzáver vám poskytuje prístup z vnútornej funkcie do rozsahu vonkajšej funkcie.
Väčšina vývojárov používa uzávery v JavaScripte vedome alebo nevedome. Poskytuje lepšiu kontrolu nad kódom pri ich používaní. Je to tiež najčastejšie kladená otázka počas ktoréhokoľvek z nich .
Príklad:
function foo () {var x = 10 function inner () {return x} return internal} var get_func_inner = foo () console.log (get_func_inner ()) console.log (get_func_inner ()) console.log (get_func_inner ())
Výkon:
10
10
10
Tu máte prístup k premenná x, ktorý je definovaný vo funkcii foo () prostredníctvom funkcie internal (), pretože neskôr zachováva reťazec rozsahu uzatváracej funkcie v čase vykonania uzatváracej funkcie. Vnútorná funkcia teda pozná hodnotu x prostredníctvom reťazca rozsahu. Takto môžete používať uzávery v JavaScripte.
Praktické uzávery
Uzávery vám umožňujú spojiť lexikálne prostredie s funkciou, ktorá pracuje s týmito údajmi. Toto má zrejmé paralely objektovo orientované programovanie , kde objekty nám umožňujú priradiť vlastnosti objektu k jednej alebo viacerým metódam.
V dôsledku toho môžete uzáver použiť kdekoľvek, kde by ste bežne mohli použiť objekt iba jednou metódou.
Príklad:
function makeSizer (size) {return function () {document.body.style.fontSize = size + 'px'}} var size12 = makeSizer (12) var size14 = makeSizer (14) var size16 = makeSizer (16)
Vyššie uvedený príklad je všeobecne pripojený ako spätné volanie: jedna funkcia, ktorá sa vykoná ako odpoveď na udalosť.
Reťazec rozsahu
Uzávery v JavaScripte majú tri rozsahy, ako napríklad:
- Miestny rozsah pôsobnosti
- Rozsah vonkajších funkcií
- Globálny rozsah
Častou chybou je neuvedomenie si, že v prípade, keď je vonkajšia funkcia sama o sebe vnorenou funkciou, prístup k rozsahu vonkajšej funkcie zahŕňa aj ohraničujúci rozsah vonkajšej funkcie, čím sa efektívne vytvára reťazec rozsahov funkcií.
// globálny rozsah var x = 10 súčet funkcií (a) {návratová funkcia (b) {návratová funkcia (c) {// vonkajšia funkcia rozsahu návratová funkcia (d) {// miestny rozsah návrat a + b + c + d + x}}}} console.log (sum (1) (2) (3) (4)) // denník 20
Môže byť tiež napísaný bez anonymných funkcií:
// globálny rozsah var x = 10 súčet funkcií (a) {návratová funkcia súčet2 (b) {návratová funkcia súčet3 (c) {// vonkajšia funkcia rozsahu návratová funkcia sum4 (d) {// lokálny rozsah návratová a + b + c + d + x}}}} var s = suma (1) var s1 = s (2) var s2 = s1 (3) var s3 = s2 (4) console.log (s3) // log 20
Vo vyššie uvedenom príklade existuje rad vnorených funkcií, z ktorých všetky majú prístup k vonkajšiemu rozsahu funkcie. Dá sa teda povedať, že uzávery majú prístup ku všetkým rozsahom vonkajších funkcií, v rámci ktorých boli deklarované.
čo je znak v jave
Uzávierka v rámci slučky
Uzávery v JavaScripte môžete použiť na uloženie anonymnej funkcie pri každom indexe súboru pole . Uveďme si príklad a pozrime sa, ako sa uzávery používajú v rámci slučky.
Príklad:
funkcia vonkajší () {var arr = [] var i pre (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ýkon:
3
3
3
3
Týmto sme sa dostali na koniec nášho článku. Dúfam, že ste pochopili, ako fungujú uzávery v JavaScripte a ako sa používajú na získanie lepšej kontroly nad kódom.
Teraz, keď viete o uzávierkach v JavaScripte, pozrite sa na od Edureka. Osvedčenie o školení v oblasti vývoja webu vám pomôže Naučte sa, ako vytvárať pôsobivé webové stránky pomocou rozhraní HTML5, CSS3, Twitter Bootstrap 3, jQuery a Google API a ako ich nasadiť do služby Amazon Simple Storage Service (S3).
Máte na nás otázku? Uveďte to v sekcii komentárov v časti „Uzávery v jazyku JavaScript“ a my sa vám ozveme.