From 7dbb85934378cc1f36d70781dbe82372dbb39835 Mon Sep 17 00:00:00 2001 From: vitya-ne <9317613+vitya-ne@users.noreply.github.com> Date: Sun, 8 Sep 2024 21:41:43 +0300 Subject: [PATCH 1/5] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D1=8F?= =?UTF-8?q?=D0=B5=D1=82=20=D0=BE=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8=D0=B5?= =?UTF-8?q?=20=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D1=8C=D0=BD=D0=BE=D0=B9=20?= =?UTF-8?q?=D0=BE=D0=B1=D0=BB=D0=B0=D1=81=D1=82=D0=B8=20=D0=B2=D0=B8=D0=B4?= =?UTF-8?q?=D0=B8=D0=BC=D0=BE=D1=81=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/closures/index.md | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/js/closures/index.md b/js/closures/index.md index 5ceebd5a0d..6f36460113 100644 --- a/js/closures/index.md +++ b/js/closures/index.md @@ -10,6 +10,8 @@ authors: - bespoyasov editors: - tachisis +contributors: + - vitya-ne keywords: - замыкание - closure @@ -56,7 +58,7 @@ _Глобальная область видимости_ — это самая const a = 42 ``` -Переменная в примере сейчас находится в глобальной области видимости. Это значит, что она будет доступна откуда угодно внутри модуля: +Переменная в примере сейчас находится в глобальной области видимости. Это значит, что она будет доступна откуда угодно: ```js const a = 42 @@ -117,6 +119,33 @@ console.log(window) Это сработает только с [`var`](/js/var-let/), но не с [`let`](/js/var-let/) или [`const`](/js/const/). Почему, мы узнаем чуть позже. +## Модульная область видимости + +При использовании модулей, переменная объявляемая вне функций будет доступна, но только в том же модуле где она создана. + +```js +// module1.js +const a = 42 + +function wrap() { + const b = a + // переменная `a` доступна в функции +} + +let c = 0 +if (a < 100) { + c = a + // переменная `a` доступна в блоке +} + +// module2.js +console.log(a) +// ReferenceError: a is not defined +``` + +Для предоставления доступа к определённым данным модуля их необходимо экспортировать. +Разделение на модули упрощает задачу структурирования кода. Это особенно важно для больших проектов. + ## Блочная область видимости _Блочная область видимости_ ограничена программным блоком, обозначенным при помощи `{` и `}`. Простейший пример такой области — это выражение внутри скобок: From 85c8bb48378fd2ecf5b9f31ed89ddd3672966056 Mon Sep 17 00:00:00 2001 From: vitya-ne <9317613+vitya-ne@users.noreply.github.com> Date: Wed, 11 Sep 2024 09:09:13 +0300 Subject: [PATCH 2/5] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D1=8F?= =?UTF-8?q?=D0=B5=D1=82=20=D1=81=D1=81=D1=8B=D0=BB=D0=BA=D1=83=20=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=B4=D0=BE=D0=BA=D1=83=20=D0=BE=20=D0=BC=D0=BE=D0=B4?= =?UTF-8?q?=D1=83=D0=BB=D1=8F=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/closures/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/closures/index.md b/js/closures/index.md index 6f36460113..fb2abf2922 100644 --- a/js/closures/index.md +++ b/js/closures/index.md @@ -121,7 +121,7 @@ console.log(window) ## Модульная область видимости -При использовании модулей, переменная объявляемая вне функций будет доступна, но только в том же модуле где она создана. +При использовании [ES-модулей](/js/modules/#moduli-v-javascript), переменная объявляемая вне функций будет доступна, но только в том же модуле где она создана. ```js // module1.js From c37e81928ee046d8275398de01ccc0acba8d2e79 Mon Sep 17 00:00:00 2001 From: Svetlana Korobtseva Date: Wed, 11 Sep 2024 20:01:54 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=D0=B7=D0=BF=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/closures/index.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/js/closures/index.md b/js/closures/index.md index fb2abf2922..d141d7d385 100644 --- a/js/closures/index.md +++ b/js/closures/index.md @@ -121,7 +121,7 @@ console.log(window) ## Модульная область видимости -При использовании [ES-модулей](/js/modules/#moduli-v-javascript), переменная объявляемая вне функций будет доступна, но только в том же модуле где она создана. +При использовании [ES-модулей](/js/modules/#moduli-v-javascript) переменная, объявляемая вне функций, будет доступна, но только в том же модуле, где она создана. ```js // module1.js @@ -144,6 +144,7 @@ console.log(a) ``` Для предоставления доступа к определённым данным модуля их необходимо экспортировать. + Разделение на модули упрощает задачу структурирования кода. Это особенно важно для больших проектов. ## Блочная область видимости From 59d67f069ce52c958db6d93e6550808178246b72 Mon Sep 17 00:00:00 2001 From: Vitya <9317613+vitya-ne@users.noreply.github.com> Date: Sat, 21 Sep 2024 11:31:12 +0300 Subject: [PATCH 4/5] Update js/closures/index.md Co-authored-by: Tatiana Fokina --- js/closures/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/closures/index.md b/js/closures/index.md index d141d7d385..60326ba6e4 100644 --- a/js/closures/index.md +++ b/js/closures/index.md @@ -129,13 +129,13 @@ const a = 42 function wrap() { const b = a - // переменная `a` доступна в функции + // Переменная `a` доступна в функции } let c = 0 if (a < 100) { c = a - // переменная `a` доступна в блоке + // Переменная `a` доступна в блоке } // module2.js From 0201261fe3e74f641d0883df7ac2dc7a750318eb Mon Sep 17 00:00:00 2001 From: Vitya <9317613+vitya-ne@users.noreply.github.com> Date: Sat, 21 Sep 2024 11:31:19 +0300 Subject: [PATCH 5/5] Update js/closures/index.md Co-authored-by: Tatiana Fokina --- js/closures/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/closures/index.md b/js/closures/index.md index 60326ba6e4..c597757e5b 100644 --- a/js/closures/index.md +++ b/js/closures/index.md @@ -143,7 +143,7 @@ console.log(a) // ReferenceError: a is not defined ``` -Для предоставления доступа к определённым данным модуля их необходимо экспортировать. +Чтобы предоставить доступ к определённым данным модуля, их нужно экспортировать. Разделение на модули упрощает задачу структурирования кода. Это особенно важно для больших проектов.