Замикання (програмування): відмінності між версіями

[перевірена версія][перевірена версія]
Вилучено вміст Додано вміст
Трохи інтервікі, мова, без джерел...
Немає опису редагування
Рядок 4:
Застосування замикань асоціюється з [[функціональне програмування|функціональним програмуванням]]. У функціональному програмуванні за допомогою замикань можуть моделюватись такі конструкції, як [[Об'єкт (програмування)|об'єкти]] в інших мовах програмування.
 
У деяких мовах програмування{{яких}} замикання створюється для підпрограм, що визначені всередині інших підпрограм, і [[вкладена функція|внутрішня підпрограма]] має доступ до [[Локальна змінна|локальних змінних]] зовнішньої. Під час виконання, коли обчислюється зовнішня підпрограма, утворюється замикання, до якого потрапляє код внутрішньої підпрограми, та посилання на ті змінні зовнішньої підпрограми, що використовуються у внутрішній підпрограмі. Посилання на змінні зовнішньої підпрограми залишаються дійсними всередині вкладеної внутрішньої підпрограми доти, поки існує ця вкладена підпрограма, навіть якщо зовнішня підпрограма завершила виконання і вийшла з області видимості. Концепцію замикань було повністю розроблено в [[1960-ті]] роки та реалізовано як особливість мови програмування [[Scheme (мова програмування)|Scheme]]. Відтоді було розроблено багато мов програмування з підтримкою замикань.
 
== Приклад реалізації на [[Lua]] ==
Рядок 39:
</syntaxhighlight>
 
Коли JS-код працює, [[Локальна змінна|локальні змінні]] зберігаються в scope. В JavaScript локальні змінні можуть лишатись в пам'яті навіть після того, як функція повернула значення.
 
=== Створення замикання в JavaScript ===