Mik a bezárások a JavaScriptben és hogyan működnek?



A JavaScript bezárásai minden egyes funkció létrehozásakor jönnek létre, a funkció létrehozásának idején. Jobban ellenőrzi a kód használatát.

egy funkció-orientált nyelv, amely nagy szabadságot ad a felhasználónak. Dinamikusan létrehozhat egy függvényt, átmásolhatja egy másik változóba, vagy argumentumként átadhatja egy másik függvénynek, és később meghívhat egy másik helyről. A JavaScript bezárásai minden egyes funkció létrehozásakor jönnek létre, a funkció létrehozásának idején. Ebben a cikkben a zárásokat a következő sorrendben fogjuk megérteni:

Bevezetés a JavaScript bezárásaiba

A lezárás a kombinációja funkció a környező állapotára, vagyis a lexikális környezetre való hivatkozásokkal együtt. Más szavakkal, a bezárás hozzáférést biztosít egy belső funkciótól a külső funkció hatóköréhez.





kódoló - bezárások javascriptben - edureka

A legtöbb fejlesztő tudatosan vagy öntudatlanul használja a JavaScript-ben lévő bezárásokat. Jobban ellenőrzi a kód használatát. Emellett ez a leggyakrabban feltett kérdés bármelyik kérdés során .



Példa:

function foo () {var x = 10 function internal () {return x} return internal} var get_func_inner = foo () console.log (get_func_inner ()) console.log (get_func_inner ()) console.log (get_func_inner ())

Kimenet:

10.
10.
10.



Itt érheti el a változó x, amely a foo () függvényben van definiálva a internal () függvényen keresztül, mivel később megőrzi a bezáró függvény hatókörét a bezáró függvény végrehajtásának idején. Így a belső függvény az x értékét a hatókörén keresztül ismeri. Így használhatja a bezárásokat a JavaScript-ben.

Gyakorlati bezárások

A bezárások lehetővé teszik a lexikális környezet társítását egy olyan funkcióval, amely az adatokon működik. Ennek nyilvánvaló párhuzama van objektumorientált programozás , ahol az objektumok lehetővé teszik számunkra, hogy az objektum tulajdonságait egy vagy több módszerrel társítsuk.

Következésképpen bárhol használhat bezárást, ahol általában csak egyetlen módszerrel használhat objektumot.

tömb javascript hossza

Példa:

makeSizer (méret) {return function () {document.body.style.fontSize = méret + 'px'}} var méret12 = makeSizer (12) var méret14 = makeSizer (14) var méret16 = makeSizer (16)

A fenti példa általában visszahívásként van csatolva: egyetlen funkció, amelyet az eseményre válaszul hajtanak végre.

def __init __ (saját) python

Hatálylánc

A JavaScript bezárásainak három hatóköre van, például:

  • Helyi hatókör
  • Külső funkciók hatóköre
  • Globális hatály

Gyakori hiba, ha nem vesszük észre, hogy abban az esetben, ha a külső függvény önmagában beágyazott függvény, a külső függvény hatóköréhez való hozzáférés magában foglalja a külső függvény körbezáró hatókörét, hatékonyan létrehozva a függvénykörök láncolatát.

// globális hatókör var x = 10 függvényösszeg (a) {visszatérési függvény (b) {visszatérési függvény (c) {// külső függvények hatóköre visszatérési függvény (d) {// helyi hatókör visszatér a + b + c + d + x}}}} console.log (összeg (1) (2) (3) (4)) // log 20

Anonim funkciók nélkül is írható:

// globális hatókör var x = 10 függvényösszeg (a) {visszatérési függvényösszeg2 (b) {visszatérési függvényösszeg3 (c) {// külső függvények hatóköre visszatérési függvényösszeg4 (d) {// helyi hatókör visszatérés a + b + c + d + x}}}} var s = összeg (1) var s1 = s (2) var s2 = s1 (3) var s3 = s2 (4) konzol.log (s3) // log 20

A fenti példában van egy sor beágyazott függvény, amelyek mindegyike hozzáfér a függvény külső hatóköréhez. Így azt mondhatja, hogy a bezárások hozzáférnek minden olyan külső funkció hatóköréhez, amelyen belül bejelentették őket.

Zárás egy hurokban

A JavaScript-ben lévő bezárásokkal névtelen funkciót tárolhat az index minden indexénél sor . Vegyünk egy példát, és nézzük meg, hogyan használják a zárásokat egy hurokban.

Példa:

function external () {var arr = [] var i for (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]())

Kimenet:

3
3
3
3

Ezzel a cikkünk végére értünk. Remélem, megértette, hogyan működnek a JavaScript zárásai és hogyan használják őket a kód jobb ellenőrzéséhez.

Most, hogy tud a JavaScript bezárásairól, nézze meg a írta Edureka. A webfejlesztési tanúsítási képzés segít megtanulni, hogyan hozhat létre lenyűgöző weboldalakat HTML5, CSS3, Twitter Bootstrap 3, jQuery és Google API-k segítségével, és telepítheti az Amazon Simple Storage Service (S3) szolgáltatásba.

Van egy kérdésünk? Kérjük, említse meg a „Bezárások a JavaScript-ben” megjegyzés rovatban, és mi kapcsolatba lépünk Önnel.