Что такое замыкания в JavaScript и как они работают?



Замыкания в JavaScript создаются каждый раз при создании функции, во время создания функции. Это обеспечивает лучший контроль над кодом при их использовании.

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

pmi-acp того стоит

Введение в замыкания в JavaScript

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





coder - закрытие в javascript - edureka

Большинство разработчиков сознательно или неосознанно используют замыкания в JavaScript. Это обеспечивает лучший контроль над кодом при их использовании. Кроме того, это наиболее часто задаваемый вопрос во время любого .



Пример:

function foo () {var x = 10 function inner () {return x} return inner} var get_func_inner = foo () console.log (get_func_inner ()) console.log (get_func_inner ()) console.log (get_func_inner ())

Вывод:

10
10
10



Здесь вы можете получить доступ к переменная x, который определен в функции foo () через функцию inner (), поскольку последняя сохраняет цепочку областей видимости включающей функции во время выполнения включающей функции. Таким образом, внутренняя функция знает значение x через свою цепочку областей видимости. Вот как вы можете использовать замыкания в JavaScript.

Практические закрытия

Замыкания позволяют связать лексическое окружение с функцией, которая работает с этими данными. Это имеет очевидные параллели с объектно-ориентированного программирования , где объекты позволяют связать свойства объекта с одним или несколькими методами.

Следовательно, вы можете использовать замыкание везде, где вы обычно можете использовать объект только с одним методом.

Пример:

функция makeSizer (размер) {return function () {document.body.style.fontSize = size + 'px'}} var size12 = makeSizer (12) var size14 = makeSizer (14) var size16 = makeSizer (16)

Приведенный выше пример обычно прикрепляется как обратный вызов: единственная функция, которая выполняется в ответ на событие.

Цепочка прицела

Замыкания в JavaScript имеют три области действия, например:

найти длину массива javascript
  • Локальный охват
  • Объем внешних функций
  • Глобальный масштаб

Распространенной ошибкой является непонимание того, что в случае, когда внешняя функция сама по себе является вложенной функцией, доступ к области действия внешней функции включает в себя область действия внешней функции, эффективно создавая цепочку областей действия функций.

// глобальная область видимости var x = 10 function sum (a) {return function (b) {return function (c) {// внешняя область видимости return function (d) {// локальная область видимости return a + b + c + d + x}}}} console.log (sum (1) (2) (3) (4)) // журнал 20

Его также можно написать без анонимных функций:

// глобальная область видимости var x = 10 function sum (a) {return function sum2 (b) {return function sum3 (c) {// Внешняя область видимости return function sum4 (d) {// локальная область return a + b + c + d + x}}}} var s = sum (1) var s1 = s (2) var s2 = s1 (3) var s3 = s2 (4) console.log (s3) // журнал 20

В приведенном выше примере есть ряд вложенных функций, каждая из которых имеет доступ к внешней области видимости функции. Таким образом, вы можете сказать, что замыкания имеют доступ ко всем областям внешних функций, в которых они были объявлены.

Замыкание внутри цикла

Вы можете использовать замыкания в JavaScript для хранения анонимной функции в каждом индексе массив . Давайте возьмем пример и посмотрим, как замыкания используются в цикле.

бросить против бросить против бросить в Java

Пример:

функция external () {var arr = [] var i for (i = 0 i<3 i++) { // storing anonymus function arr[i] = function () { return i } } // returning the array. return arr } var get_arr = outer() console.log(get_arr[0]()) console.log(get_arr[1]()) console.log(get_arr[2]())

Вывод:

3
3
3
3

На этом мы подошли к концу нашей статьи. Надеюсь, вы поняли, как работают замыкания в JavaScript и как они используются для лучшего контроля над кодом.

Теперь, когда вы знаете о замыканиях в JavaScript, ознакомьтесь с пользователя Edureka. Курс по сертификации веб-разработки поможет вам узнать, как создавать впечатляющие веб-сайты с помощью HTML5, CSS3, Twitter Bootstrap 3, jQuery и API Google и развертывать их в Amazon Simple Storage Service (S3).

Есть вопрос к нам? Пожалуйста, укажите это в разделе комментариев «Замыкания в JavaScript», и мы свяжемся с вами.