diff --git a/index.html b/index.html index 5e60e40..3043088 100644 --- a/index.html +++ b/index.html @@ -5,7 +5,38 @@ Практика верстки + - + + +

Замыкания в JavaScript для начинающих

+ +

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

Материал, перевод которого мы публикуем сегодня, посвящён рассказу о внутренних механизмах замыканий и о том, как они работают в JavaScript-программах.

+ +

Что такое замыкание?

+

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

+ +

Что такое лексическое окружение?

+

Понятие «лексическое окружение» или «статическое окружение» в JavaScript относится к возможности доступа к переменным, функциям и объектам на основе их физического расположения в исходном коде. Рассмотрим пример:

+ + Лексическое окружение фото + +

Здесь у функции inner() есть доступ к переменным, объявленным в её собственной области видимости, в области видимости функции outer() и в глобальной области видимости. Функция outer() имеет доступ к переменным, объявленным в её собственной области видимости и в глобальной области видимости. +

Цепочка областей видимости вышеприведённого кода будет выглядеть так:

+ + Цепочка областей видимости фото + +

Обратите внимание на то, что функция inner() окружена лексическим окружением функции outer(), которая, в свою очередь, окружена глобальной областью видимости. Именно поэтому функция inner() может получить доступ к переменным, объявленным в функции outer() и в глобальной области видимости.

\ No newline at end of file diff --git a/styles.css b/styles.css index 1cbd2e0..f3a96d8 100644 --- a/styles.css +++ b/styles.css @@ -1,8 +1,202 @@ -/* Тут пиши основные стили */ +h1 { + font-family: "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Arial, sans-serif; + width: 700px; + font-size:42px; + color:rgba(0,0,0,0.84); + text-align:left; + line-height:44px; + margin: auto; +} + +h2 { + font-family: "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Arial, sans-serif; + width: 700px; + font-size:34px; + color:rgba(0,0,0,0.84); + text-align:left; + line-height:39px; + margin: 55px auto 10px auto; +} + +.blogButton { + color: red; +} + +.Logo { + margin-left: 38px; + width: 97px; + height: 64px; + margin-top: 10px; +} + +.firstButton { + margin-left: 38px; +} + +ul li:hover { + text-decoration: underline; + cursor: pointer; +} + + +ul { + list-style-type: none; + padding: 10px; + background-color: lightgrey; + height: 60px; + text-align: center; + width: 100%; + border-top: solid #333333; + border-bottom: solid #333333; + display: flex; + flex-direction: row; + justify-content: flex-start; + gap: 30px; +} + + +li { + font-family: Georgia, Cambria, "Times New Roman", Times, serif; + font-size:24px; + color:#333333; + text-align:left; + line-height:36px; + margin-top: auto; + margin-bottom: auto; +} + +p { + font-family: Georgia, Cambria, "Times New Roman", Times, serif; + width: 700px; + font-size:21px; + color:rgba(0,0,0,0.84); + text-align:left; + line-height:33px; + margin: 25px auto; +} + + +.img1 { + width: 700px; + height: 727px; + display: block; + margin: 43px auto 37px auto; +} + +.img2 { + width: 700px; + height: 923px; + display: block; + margin: 43px auto 37px auto; +} + +code { + background-color: #eee; + border-radius: 3px; + font-family: courier, monospace; + padding: 0 3px; +} + @media (max-width: 800px) { -/* Тут пиши стили для мобилки. - Стили применятся только когда страничка будет ≤800px шириной - */ + h1 { + font-family: "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Arial, sans-serif; + width: 520px; + font-size:26px; + color:rgba(0,0,0,0.84); + text-align:left; + line-height:28px; + margin: 20px auto 20px auto; + } + + h2 { + font-family: "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Arial, sans-serif; + font-size:22px; + color:rgba(0,0,0,0.84); + text-align:left; + line-height:39px; + width: 520px; + margin: 25px auto 6px auto; + } + + p { + font-family: Georgia, Cambria, "Times New Roman", Times, serif; + font-size:18px; + color:rgba(0,0,0,0.84); + text-align:left; + line-height:22px; + width: 520px; + margin: auto; + } + + .img1 { + width: 100%; + height: 100%; + display: block; + margin: 25px auto 25px auto; + } + + .img2 { + width: 100%; + height: 100%; + display: block; + margin: 25px auto 25px auto; + } + + code { + background-color: #eee; + border-radius: 3px; + font-family: courier, monospace; + padding: 0 3px; + } + + .blogButton { + color: red; + } + + .Logo { + margin-left: 20px; + width: 97px; + height: 64px; + margin-top: 10px; + } + + .firstButton { + margin-left: 20px; + } + + ul li:hover { + text-decoration: underline; + cursor: pointer; + } + + + ul { + list-style-type: none; + padding: 10px; + margin: 0; + background-color: lightgrey; + height: 210px; + text-align: center; + width: 100%; + border-top: solid #333333; + border-bottom: solid #333333; + display: flex; + flex-direction: column; + justify-content: flex-start; + gap: 0 + } + + + li { + font-family: Georgia, Cambria, "Times New Roman", Times, serif; + font-size:20px; + color:#333333; + text-align:left; + line-height:25px; + margin-left: 20px; + } + + } \ No newline at end of file