Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions .idea/article-markup.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions .idea/encodings.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions .idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

49 changes: 48 additions & 1 deletion index.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,53 @@
<link rel="stylesheet" href="styles.css">
</head>
<body>
<!--Статью верстать тут-->
<div class="header">
<div class="logo">
<img src="responsive-design/2744EFD6-B878-4DCB-B0D5-526F1B233733/FF01C60E-3379-4ED9-B65C-DE7F425CF688@1x.png"
height="64" width="97"/>
</div>
<nav class="menu">
<ul>
<li><a class>Обо мне</a></li>
<li><a class>Проекты</a></li>
<li><a class>Портфолио</a></li>
<li><a class="active">Блог</a></li>
<li><a class>Контакты</a></li>
</ul>
</nav>
</div>
<div class="content">
<h1 class="H1">
Замыкания в JavaScript для начинающих
</h1>
<div class="text">
Замыкания — это одна из фундаментальных концепций JavaScript, вызывающая сложности у многих новичков, знать и понимать которую должен каждый JS-программист. Хорошо разобравшись с замыканиями, вы сможете писать более качественный, эффективный и чистый код. А это, в свою очередь, будет способствовать вашему профессиональному росту.
Материал, перевод которого мы публикуем сегодня, посвящён рассказу о внутренних механизмах замыканий и о том, как они работают в JavaScript-программах.
</div>
<h2 class="H2">
Что такое замыкание?
</h2>
<div class="text">
Замыкание — это функция, у которой есть доступ к области видимости, сформированной внешней по отношению к ней функции даже после того, как эта внешняя функция завершила работу. Это значит, что в замыкании могут храниться переменные, объявленные во внешней функции и переданные ей аргументы. Прежде чем мы перейдём, собственно, к замыканиям, разберёмся с понятием «лексическое окружение».
</div>
<h2 class="H2">
Что такое лексическое окружение?
</h2>
<div class="text">
Понятие «лексическое окружение» или «статическое окружение» в JavaScript относится к возможности доступа к переменным, функциям и объектам на основе их физического расположения в исходном коде. Рассмотрим пример:
</div>
<img class="IMG"
alt="left"
height="364" src="article-design/2744EFD6-B878-4DCB-B0D5-526F1B233733/CA501510-E978-4377-9076-8F392B899C1B@0.5x.png" width="350"/>
<div class="text">
Здесь у функции <code class="code">inner()</code> есть доступ к переменным, объявленным в её собственной области видимости, в области видимости функции <code class="code">outer()</code> и в глобальной области видимости. Функция <code class="code">outer()</code> имеет доступ к переменным, объявленным в её собственной области видимости и в глобальной области видимости.
Цепочка областей видимости вышеприведённого кода будет выглядеть так:
</div>
<img class ="IMG" src="article-design/2744EFD6-B878-4DCB-B0D5-526F1B233733/848B0BFD-C857-4F1E-93BF-3822E0A81A7E@0.5x.png"
height="462" width="350" alt="left"/>
<div class="text">
Обратите внимание на то, что функция <code class="code">inner()</code> окружена лексическим окружением функции <code class="code">outer()</code>, которая, в свою очередь, окружена глобальной областью видимости. Именно поэтому функция <code class="code">inner()</code> может получить доступ к переменным, объявленным в функции <code class="code">outer()</code> и в глобальной области видимости.
</div>
</div>
</body>
</html>
168 changes: 165 additions & 3 deletions styles.css
Original file line number Diff line number Diff line change
@@ -1,8 +1,170 @@
/* Тут пиши основные стили */
h1{
font-family: "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Arial, sans-serif;
width: 700px;
height:88px;
position:static;
font-size:42px;
color:rgba(0,0,0,0.84);
text-align:left;
line-height:44px;
}

.text
{
font-family: Georgia, Cambria, "Times New Roman", Times, serif;
font-size:21px;
color:rgba(0,0,0,0.84);
text-align:left;
line-height:33px;
}

h2{
font-family:LucidaGrande-Bold, Geneva, Arial, sans-serif;
font-size:34px;
color:rgba(0,0,0,0.84);
text-align:left;
line-height:39px;
}

code{
font-family: "Courier New", monospace;
background-color: lightgray;
}
.IMG{
display: block;
}
body {
margin: 0;
padding: 0;
font-family: Georgia, Cambria, "Times New Roman", Times, serif;
}

.content {
max-width: 800px;
margin: 0 auto;
}

li{
text-decoration: none;
color: #333;
font-family: 'Arial', sans-serif;
font-size: 20px;
padding: 0.5rem 1rem;
transition: color 0.3s ease;
}

li:hover{
cursor: url('responsive-design/2744EFD6-B878-4DCB-B0D5-526F1B233733/9E1721B2-E123-44D1-BBA7-88E713A6A184@1x.png'), auto;
color: #2980b9;
text-decoration: underline;
}

.active{
color: red;
}
nav{
display: flex;
gap: 2rem;
list-style: none;
max-width: 1200px;
margin: 0 auto;
justify-content: space-between;
align-items: center;
padding: 0 20px;
}
.logo{
border-bottom: 1px double darkgray;
}

.header{

box-shadow: 0 2px 10px rgba(0,0,0,0.1);
padding: 1rem 0;
background-color: rgba(250,249,248,0.14);
border-bottom: 1px double darkgray;
}

ul{
display: flex;
gap: 2rem;
list-style: none;
margin: 0;
padding: 0;
justify-content: left;
}

@media (max-width: 800px) {
/* Тут пиши стили для мобилки.
Стили применятся только когда страничка будет ≤800px шириной
*/
h1 {
width: 100%;
font-size: 32px;
line-height: 38px;
padding: 0 15px;
height: auto;
margin: 20px 0;
}

.content {
padding: 0 15px;
}

.header {
padding: 10px 0;
}

nav {
flex-direction: column;
gap: 1rem;
padding: 0 15px;
}

.logo {
border-bottom: none;
padding-bottom: 10px;
}

ul {
flex-direction: column;
gap: 1rem;
width: 100%;
align-items: flex-start;
}

li {
text-decoration: none;
color: #333;
font-family: 'Arial', sans-serif;
font-size: 20px;
padding: 0.5rem 1rem;
transition: color 0.3s ease;
}

li:hover {
cursor: url('responsive-design/2744EFD6-B878-4DCB-B0D5-526F1B233733/9E1721B2-E123-44D1-BBA7-88E713A6A184@1x.png'), auto;
color: #2980b9;
text-decoration: underline;
}

.text {
font-size: 18px;
line-height: 28px;
padding: 0 15px;
}

h2 {
font-size: 26px;
line-height: 32px;
padding: 0 15px;
}

code {
font-size: 14px;
word-wrap: break-word;
}

.IMG {
max-width: 100%;
height: auto;
margin: 0 auto;
}
}