Шта су затварања у ЈаваСцрипт-у и како функционишу?



Затварања у ЈаваСцрипт-у креирају се сваки пут када се креира функција, у време креирања функције. Пружа бољу контролу над кодом приликом њихове употребе.

је језик оријентисан на функције који даје пуно слободе кориснику. Можете динамички креирати функцију, копирати је у другу променљиву или проследити као аргумент другој функцији и касније позвати са другог места. Затварања у ЈаваСцрипт-у креирају се сваки пут када се креира функција, у време креирања функције. У овом чланку ћемо разумети затварање у следећем низу:

Увод у Затварање у ЈаваСцрипт-у

Затварање је комбинација а функцију у пакету са референцама на његово окружење, тј. лексичко окружење. Другим речима, затварач вам омогућава приступ унутрашње функције опсегу спољне функције.





кодер - затварања у јавасцрипту - едурека

Већина програмера користи затварање у ЈаваСцрипт-у свесно или несвесно. Пружа бољу контролу над кодом приликом њихове употребе. Такође, то је најчешће постављано питање током било ког .



Пример:

фунцтион фоо () {вар к = 10 фунцтион интернал () {ретурн к} ретурн иннер} вар гет_фунц_иннер = фоо () цонсоле.лог (гет_фунц_иннер ()) цонсоле.лог (гет_фунц_иннер ()) цонсоле.лог (гет_фунц_иннер ())

Излаз:

10
10
10



Овде можете приступити променљива к која је дефинисана у функцији фоо () кроз функцију иннер () јер касније чува ланац опсега функције која обухвата, у време извршења функције која обухвата. Дакле, унутрашња функција зна вредност к кроз свој ланац опсега. На овај начин можете користити затварање у ЈаваСцрипт-у.

Практична затварања

Затварања вам омогућавају да повежете лексичко окружење са функцијом која делује на те податке. Ово има очигледне паралеле са објектно оријентисано програмирање , где нам објекти омогућавају да својства објекта повежемо са једном или више метода.

проћи по вредности и проћи поред референце јава

Сходно томе, можете користити затварач било где да бисте могли да користите објекат само са једном методом.

Пример:

функција макеСизер (величина) {ретурн функција () {доцумент.боди.стиле.фонтСизе = величина + 'пк'}} вар сизе12 = макеСизер (12) вар сизе14 = макеСизер (14) вар сизе16 = макеСизер (16)

Горњи пример је обично приложен као повратни позив: једна функција која се извршава као одговор на догађај.

Сцопе Цхаин

Затварања у ЈаваСцрипт-у имају три опсега, као што су:

  • Локални опсег
  • Обим спољних функција
  • Глобал Сцопе

Уобичајена грешка је не схватање да, у случају када је спољна функција сама угнежђена функција, приступ опсегу спољне функције укључује обухватан опсег спољне функције, ефикасно стварајући ланац опсега функција.

// глобални опсег вар к = 10 функција зброј (а) {функција повратка (б) {функција повратка (ц) {// функција спољног опсега функција враћања (д) {// локални опсег повратак а + б + ц + д + к}}}} цонсоле.лог (сум (1) (2) (3) (4)) // лог 20

Може се написати и без анонимних функција:

// глобални опсег вар к = 10 функција сум (а) {ретурн функција сум2 (б) {ретурн фунцтион сум3 (ц) {// спољне функције опсег ретурн функција сум4 (д) {// локални опсег ретурн а + б + ц + д + к}}}} вар с = сум (1) вар с1 = с (2) вар с2 = с1 (3) вар с3 = с2 (4) цонсоле.лог (с3) // лог 20

У горњем примеру, постоји низ угнежђених функција које све имају приступ спољном опсегу функције. Тако можете рећи да затварачи имају приступ свим опсезима спољних функција унутар којих су декларисани.

Затварање унутар петље

Можете користити затвараче у ЈаваСцрипт-у да бисте сачували анонимну функцију на сваком индексу низ . Узмимо пример и погледајмо како се затварачи користе у петљи.

Пример:

функција ектернал () {вар арр = [] вар и фор (и = 0 и<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]())

Излаз:

3
3
3
3

Овим смо дошли до краја нашег чланка. Надам се да сте разумели како функционирају затварања у ЈаваСцрипт-у и како се користе за бољу контролу над кодом.

фибоначи у ц ++

Сада када знате за Затварање у ЈаваСцрипт-у, погледајте од Едуреке. Обука за сертификацију за веб развој ће вам помоћи да научите како да креирате импресивне веб локације помоћу ХТМЛ5, ЦСС3, Твиттер Боотстрап 3, јКуери и Гоогле АПИ-ја и примените их на Амазон Симпле Стораге Сервице (С3).

Имате питање за нас? Молимо вас да га спомињете у одељку за коментаре „Затварање у ЈаваСцрипт-у“ и јавићемо вам се.