Замыкание в JavaScript
Сегодня мы рассмотрим одну из особенностей языка javaScript это замыкание. Замыкание в JavaScript используется крайне часто, поэтому любой уважающий себя программист должен его знать.
Прежде чем понять что такое замыкание в JavaScript необходимо разобраться с другим понятием — глобальные переменные или функции.
В большинстве языков программирования чтобы сделать функцию или переменную глобальной необходимо указать какое-то ключевое слово (например global). В JavaScript всё иначе:
Функция или переменная является глобальной если не указана внутри какой либо вложенной функции
Верхний уровень вложенности программы на JavaScript занимает объект window:
1 2 3 4 5 | var a = 5; // тождественные записи console.log(a); console.log(window.a); |
ОСОБЕННОСТИ!
1 2 3 | for (var i = 0; i < 5; i++) {...} alert(i); // переменная i = 5 и будет доступна после цикла! |
Что такое замыкание?
Под замыканием в JavaScript понимаются все доступные переменные для конкретной функции.
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 | var a1 = 5; function metod1() { var a2 = 10; function metod2() { } metod2(); } // Для функции <strong>metod1</strong> из-за замыкания доступна переменная <strong>a1</strong>. // Для функции <strong>metod2</strong> из-за замыкания доступны переменные <strong>a1</strong> и <strong>a2</strong>. |
В JavaScript Функция может содержать в себе функцию
Исключения!
В данном примере данная запись var func = new Function(», ‘alert(a)’); позволяет создать функцию не в рамках контекста родительской функции method1, а внутри объекта верхнего уровня window
1 2 3 4 5 6 7 8 9 10 11 | var a = 1; function method1() { var a = 2; var method2 = new Function('', 'alert(a)'); return method2; } method1(); // выведет 1 |
14 ноября 2018 /
2575 Views /
8 комментариев