PROG_WAY_BLOG Telegram 85
Замыкания

Изначально я и хотел обсудить такой концепт, как замыкания, потому что тема очень интересная и востребованная — почти каждое собеседование проходит с вопросом что такое замыкания и это очень важно понимать. Для понимания этой темы в начале лучше вникнуть в области видимости и разобраться что это всё таки такое.

Замыкание с точки зрения теории — это способность функции запомнить своё окружение (ссылки на переменные) в момент вызова. Это такой способ манипуляции областями видимости, который позволяет «замкнуть» переменную внутри тела функции. При помощи такой манипуляции мы можем расширить функционал обычных функций путём создания новых функций с замкнутыми в них переменными. На теории всё вообще не понятно, хотя я правда старался. Рассмотрим пример:

function sayHello(name) {
function wrapped() {
console.log(`Привет, ${name}`)
}
return wrapped
}

// создаем много функций на базе одной
const helloDenis = sayHello("Денис")
const helloKate = sayHello("Катя")
const helloMax = sayHello("Макс")

helloDenis() // Привет, Денис
helloKate() // Привет, Катя
helloMax() // Привет, Макс


Переменная name является замкнутой.

Каким образом мы добиваемся замыкания? В теле функции sayHello мы объявляем локальную функцию, которая остается доступной только внутри тела этой самой функции (из-за особенностей областей видимости). Возвращаем эту функцию. А у этой функции есть доступ к переменной name. Значение переменной при вызове sayHello замыкается, так как при каждом вызове функции sayHello внутри нее создается своя локальная переменная name, никак не зависящая от вызова этой функции снова. На практике должно быть понятнее.

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

Тема и правда сложная, надеюсь я смог объяснить её понятно. В скором времени постараюсь выпустить пост с практическими примерами, будет ещё лучше.

#javascript #theory



tgoop.com/prog_way_blog/85
Create:
Last Update:

Замыкания

Изначально я и хотел обсудить такой концепт, как замыкания, потому что тема очень интересная и востребованная — почти каждое собеседование проходит с вопросом что такое замыкания и это очень важно понимать. Для понимания этой темы в начале лучше вникнуть в области видимости и разобраться что это всё таки такое.

Замыкание с точки зрения теории — это способность функции запомнить своё окружение (ссылки на переменные) в момент вызова. Это такой способ манипуляции областями видимости, который позволяет «замкнуть» переменную внутри тела функции. При помощи такой манипуляции мы можем расширить функционал обычных функций путём создания новых функций с замкнутыми в них переменными. На теории всё вообще не понятно, хотя я правда старался. Рассмотрим пример:


function sayHello(name) {
function wrapped() {
console.log(`Привет, ${name}`)
}
return wrapped
}

// создаем много функций на базе одной
const helloDenis = sayHello("Денис")
const helloKate = sayHello("Катя")
const helloMax = sayHello("Макс")

helloDenis() // Привет, Денис
helloKate() // Привет, Катя
helloMax() // Привет, Макс


Переменная name является замкнутой.

Каким образом мы добиваемся замыкания? В теле функции sayHello мы объявляем локальную функцию, которая остается доступной только внутри тела этой самой функции (из-за особенностей областей видимости). Возвращаем эту функцию. А у этой функции есть доступ к переменной name. Значение переменной при вызове sayHello замыкается, так как при каждом вызове функции sayHello внутри нее создается своя локальная переменная name, никак не зависящая от вызова этой функции снова. На практике должно быть понятнее.

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

Тема и правда сложная, надеюсь я смог объяснить её понятно. В скором времени постараюсь выпустить пост с практическими примерами, будет ещё лучше.

#javascript #theory

BY progway — программирование, IT




Share with your friend now:
tgoop.com/prog_way_blog/85

View MORE
Open in Telegram


Telegram News

Date: |

‘Ban’ on Telegram How to create a business channel on Telegram? (Tutorial) In 2018, Telegram’s audience reached 200 million people, with 500,000 new users joining the messenger every day. It was launched for iOS on 14 August 2013 and Android on 20 October 2013. How to Create a Private or Public Channel on Telegram? According to media reports, the privacy watchdog was considering “blacklisting” some online platforms that have repeatedly posted doxxing information, with sources saying most messages were shared on Telegram.
from us


Telegram progway — программирование, IT
FROM American