Skip to content

Commit 81ac258

Browse files
committed
Update 2.3
1 parent a2cb74d commit 81ac258

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

content/ru/2-3-Context.md

+11-7
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
## 2.3. Контекст и лексическое окружение
22

3-
> Область видимости (Scope) — часть кода, из которой "виден" идентификатор.
3+
> Область видимости (Scope)
4+
5+
Область видимости — часть кода, из которой "виден" идентификатор. Рассмотрим пример:
46

57
```js
68
const level = 1;
@@ -15,7 +17,7 @@ const f = () => {
1517
};
1618
```
1719

18-
В современном стандарте `JavaScript` область видимости порождается функцией или любым блоком операторов, имеющим фигурные скобки `{}` или операторами ветвления и циклов, в которых могут быть блоки, но скобки `{}` могут и опускаться. В `Python` scope порождается только функциями. Сравните этот код с предыдущим примером:
20+
В современном стандарте `JavaScript` область видимости порождается функцией или любым блоком операторов, имеющим фигурные скобки `{}`. В `Python` scope порождается только функциями. Сравните этот код с предыдущим примером:
1921

2022
```py
2123
level = 1
@@ -30,14 +32,16 @@ def f():
3032
f()
3133
```
3234

33-
> Лексический контекст (Lexical environment) — набор идентификаторов, связанных с определенными значениями в рамках функции или блока кода (в том числе блоков циклов, условий и т.д.).
35+
> Лексический контекст (Lexical environment)
36+
37+
Набор идентификаторов, доступный в локальном блоке или функции. Если идентификатор не найден в лексическом контексте, то поиск продолжится в родительском контексте, ведь контексты имеют вложенную структуру. Если дойдя до корня идентификатор не найден, то будут проведен поиск в глобальном контексте. Ддля JavaScript лексические контексты ограничиваются блоками `{}` и функуциями, а для Python — только функциями.
3438

3539
Лексический контекст или лексическое окружение имеют вложенность, т.е. кроме локальных переменных в блоке, порождающем контекст, есть и вышестоящий блок со своим контекстом. Если идентификатор определен в вышестоящем контексте, то он виден во всех вложенных, если только не происходит перекрытия имен. Перекрытие — это случай, когда во вложенном контексте заново объявлен идентификатор, уже имеющийся во внешнем, тогда значение из внешнего контекста становится недоступно и мы можем доступаться только к внутреннему.
3640

37-
> Объектный контекст функции — объект, связанный со служебным идентификатором `this`.
41+
> Объектный контекст
3842
39-
Все функции, кроме стрелочных, могут быть связаны с объектным контекстом. Объект связан с `this`, если функция является методом этого объекта, если функция привязана к нему через `bind` или вызвана через `apply` и `call`.
43+
Объект, доступный из методов и функций через специальный идентификатор `this` тоже используется в качестве контекста. В большинстве языков программирования, метод связывается с `this` при создании объекта класса. Но в JavaScript функции могут быть прикреплены к `this` при помощи `bind` или одноразово вызваны в контексте объекта через `call` и `apply`. Все функции, кроме стрелочных, могут быть связаны с объектами.
4044

41-
> Глобальный контекст (Global context) — глобальный объект-справочник.
45+
> Глобальный контекст (Global context)
4246
43-
Если идентификатор не находится ни в одном из вложенных лексических контекстов, то будет выполнен его поиск в глобальном контексте (global, window, sandbox).
47+
Если идентификатор не находится ни в одном из вложенных лексических контекстов, то будет выполнен его поиск в глобальном объекте-справочнике, который является глобальным контекстом (в JavaScript `global` или `window`).

0 commit comments

Comments
 (0)