Skip to content

Commit

Permalink
Добавляет описание модульной области видимости
Browse files Browse the repository at this point in the history
  • Loading branch information
vitya-ne committed Sep 8, 2024
1 parent c02bf39 commit f2ed697
Showing 1 changed file with 30 additions and 1 deletion.
31 changes: 30 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,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
```

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

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

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

0 comments on commit f2ed697

Please sign in to comment.