Замыканні ў JavaScript
Давайце цяпер вывучым паняцце замыканне (англ. closure). На самой справе вы ўжо знаёмыя з гэтым паняццем, засталося толькі даведацца правільную тэрміналогію.
Такім чынам, замыканне - гэта функцыя разам з усімі знешнімі зменнымі, якія ёй даступныя. Ці, іншымі словамі, замыканне - гэта функцыя разам са сваім лексічным атачэннем.
У JavaScript часцей за ўсё, кажучы "замыканне функцыі", маюць на ўвазе не саму гэтую функцыю, а менавіта яе знешнія зменныя. Калі ж якая-небудзь функцыя атрымлівае зменную са свайго лексічнага атачэння, то кажуць "зменная бярэцца з замыкання".
Успомнім код, які мы зрабілі ў папярэднім уроку:
function test() {
let num = 1;
return function() {
console.log(num);
}
}
let func = test();
func(); // выведзе 1
У даным выпадку і можна сказаць, што функцыя
func
атрымлівае значэнне зменнай
num
з замыкання. Таксама можна сказаць,
што функцыя func
захоўвае значэнне зменнай
num
у замыканні.