Функция и лексикалния контекст, в който е декларирана, се комбинират, за да образуват затваряне. По-конкретно, това е вътрешна функция, която има достъп до променливите на външната или заобикалящата функция.
Функциите, които се отнасят до независими (свободни) променливи, се наричат затваряния. Функцията, посочена в затварянето, с други думи, „помни“ средата, в която е разработена.
Затварянето има три вериги на обхват –
- Собствен обхват, където променливите са дефинирани между фигурните скоби
- Променливи на външни функции
- Глобални променливи
Нека да разгледаме пример за концепция за затваряне.
function Welcome(name)
var greetingInfo = function (message)
console.log(message + " " + name);
;
return greetingInfo;
var myFunction = Welcome("John");
myFunction("Welcome "); //Output: Welcome John
myFunction("Hello Mr."); //output: Hello Mr.John
Според кода по-горе, дори след като външната функция се е върнала, вътрешната функция (т.е. greetingInfo) може да има достъп до променливите в обхвата на външната функция (т.е. Welcome).
https://www.codesolutionstuff.com/learn-javascript-closures-with-code-examples/