Skip to content

Commit dba88a6

Browse files
authored
Merge pull request #1747 from Rnbsov/patch-109
👾 update article about global object
2 parents 7e4f329 + 4582995 commit dba88a6

File tree

1 file changed

+5
-2
lines changed
  • 1-js/06-advanced-functions/05-global-object

1 file changed

+5
-2
lines changed

1-js/06-advanced-functions/05-global-object/article.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
В браузере он называется `window`, в Node.js — `global`, в другой среде исполнения может называться иначе.
77

8-
Недавно `globalThis` был добавлен в язык как стандартизированное имя для глобального объекта, которое должно поддерживаться в любом окружении. В некоторых браузерах, например в старой версии Edge который не был на Chromium, `globalThis` ещё не поддерживается, но легко реализуется с помощью полифила.
8+
Недавно `globalThis` был добавлен в язык как стандартизированное имя для глобального объекта, которое должно поддерживаться в любом окружении. Он поддерживается во всех основных браузерах.
99

1010
Далее мы будем использовать `window`, полагая, что наша среда - браузер. Если скрипт может выполняться и в другом окружении, лучше будет `globalThis`.
1111

@@ -25,6 +25,8 @@ var gVar = 5;
2525
alert(window.gVar); // 5 (становится свойством глобального объекта)
2626
```
2727

28+
То же самое касается функций, объявленных с помощью синтаксиса Function Declaration (выражения с ключевым словом `function` в основном потоке кода, не Function Expression)
29+
2830
Пожалуйста, не полагайтесь на это. Такое поведение поддерживается для совместимости. В современных проектах, использующих [JavaScript-модули](info:modules), такого не происходит.
2931

3032
Если бы мы объявили переменную при помощи `let`, то такого бы не произошло:
@@ -82,7 +84,8 @@ if (!window.Promise) {
8284
Это включает в себя как встроенные объекты, например, `Array`, так и характерные для окружения свойства, например, `window.innerHeight` -- высота окна браузера.
8385
- Глобальный объект имеет универсальное имя -- `globalThis`.
8486

85-
...Но чаще на него ссылаются по-старому, используя имя, характерное для данного окружения, такое как `window` (браузер) и `global` (Node.js). Так как `globalThis` появился недавно, он не поддерживается в IE и Edge (не-Chromium версия), но можно использовать полифил.
87+
...Но чаще на него ссылаются по-старому, используя имя, характерное для данного окружения, такое как `window` (браузер) и `global` (Node.js).
88+
8689
- Следует хранить значения в глобальном объекте, только если они действительно глобальны для нашего проекта. И стараться свести их количество к минимуму.
8790
- В браузерах, если только мы не используем [модули](info:modules), глобальные функции и переменные, объявленные с помощью `var`, становятся свойствами глобального объекта.
8891
- Для того, чтобы код был проще и в будущем его легче было поддерживать, следует обращаться к свойствам глобального объекта напрямую, как `window.x`.

0 commit comments

Comments
 (0)