Затварања у JavaScript-у
Хајде сада да проучимо појам затварање (closure). У ствари, ви сте већ упознати са овим појмом, остаје само да сазнате праву терминологију.
Дакле, затварање је функција заједно са свим спољашњим променљивим које су јој доступне. Или, другим речима, затварање је функција заједно са својим лексичким окружењем.
У JavaScript-у најчешће, када се каже "затварање функције", мисли се не на саму ту функцију, већ управо на њене спољашње променљиве. Ако нека функција добије променљиву из свог лексичког окружења, тада се каже "променљива се узима из затварања".
Подсетимо се кода који смо направили у претходној лекцији:
function test() {
let num = 1;
return function() {
console.log(num);
}
}
let func = test();
func(); // исписаће 1
У овом случају се може рећи да функција
func добија вредност променљиве
num из затварања. Такође се може рећи,
да функција func чува вредност променљиве
num у затварању.