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