JavaScript

Javascript Что такое замыкания?

Замыкание – это способность функций захватывать локальный контекст, с целью реализации приватности доступа.

const fn = () => {
let n = 0;
return () => ++n;
};

const inc = fn();
const cnt = fn();

console.log(inc());
console.log(inc());
console.log(inc());
n = 25;
console.log(cnt());
console.log(cnt());
console.log(cnt());
ИЕ
Ислам Ермеков
87 172
Лучший ответ
Вообще довольно не простая тема
function func1(n) {
return function () {
console.log(n * 10)
}
}
let calc = func1(35);
calc()
>>>
calc возвращает вложенную функцию.
calc мы вызвали без параметра, но она всё равно возвращает результат 350. При ее вызове отработала функция func1 и вернула новую функцию, которая была вызвана в контексте функции func1. Переменная n оказалась замкнута в возвращаемой функции.
Поэтому всегда когда будем вызывать calc() в ней всегда будет храниться переменная n, функция ее замкнула
Kolia Dimin
Kolia Dimin
63 486
Kolia Dimin Вот как это можно применить на практике:
function func1(n) {
return function (num) {
console.log(n + num)
}
}
let calc = func1(10);
calc(1); // 11
calc(2); // 12
calc(3); // 13
calc(4); // 14
calc(5); // 15
Едиге Баймаков
Едиге Баймаков
68 836
Kolia Dimin По моему это рекурсия. А не замыкание
Замыкание - это процесс который происходит в момент определения функции. В момент замыкания сохраняется и остается неизменной иерархия областей видимости переменных и самих переменных которые существуют в замыкаемых областях.
ткни в розетку шпилькой для волос - узнаешь моментально.
https://learn.javascript.ru/closure

Замыкание – это функция, которая запоминает свои внешние переменные и может получить к ним доступ. В некоторых языках это невозможно, или функция должна быть написана специальным образом, чтобы получилось замыкание.
Замыкание - способность функции запомнить контекст, в котором она была определена, и обращаться к нему в процессе вызова.