Skip to content

Commit

Permalink
Добавляет описание модульной области видимости (#5499)
Browse files Browse the repository at this point in the history
Co-authored-by: Svetlana Korobtseva <[email protected]>
Co-authored-by: Tatiana Fokina <[email protected]>
  • Loading branch information
3 people authored Oct 14, 2024
1 parent d733896 commit 826abb9
Showing 1 changed file with 31 additions and 1 deletion.
32 changes: 31 additions & 1 deletion js/closures/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ authors:
- bespoyasov
editors:
- tachisis
contributors:
- vitya-ne
keywords:
- замыкание
- closure
Expand Down Expand Up @@ -56,7 +58,7 @@ _Глобальная область видимости_ — это самая
const a = 42
```

Переменная в примере сейчас находится в глобальной области видимости. Это значит, что она будет доступна откуда угодно внутри модуля:
Переменная в примере сейчас находится в глобальной области видимости. Это значит, что она будет доступна откуда угодно:

```js
const a = 42
Expand Down Expand Up @@ -117,6 +119,34 @@ console.log(window)

Это сработает только с [`var`](/js/var-let/), но не с [`let`](/js/var-let/) или [`const`](/js/const/). Почему, мы узнаем чуть позже.

## Модульная область видимости

При использовании [ES-модулей](/js/modules/#moduli-v-javascript) переменная, объявляемая вне функций, будет доступна, но только в том же модуле, где она создана.

```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
```

Чтобы предоставить доступ к определённым данным модуля, их нужно экспортировать.

Разделение на модули упрощает задачу структурирования кода. Это особенно важно для больших проектов.

## Блочная область видимости

_Блочная область видимости_ ограничена программным блоком, обозначенным при помощи `{` и `}`. Простейший пример такой области — это выражение внутри скобок:
Expand Down

0 comments on commit 826abb9

Please sign in to comment.