06. Global Environment

Глобальный объект, или объекты в глобальном пространстве, это обычные объекты/функции JavaScript, которые доступны из любого места в JS коде. Технически говоря, они являются свойствами глобального объекта (isNaN === window.isNaN = true).

При запуске интерпретатора JS (или когда веб-броузер загружает новую страницу), создается новый глобальный объект, для которого инициализируется начальный набор свойств, определяющих:

  • глобальные свойства, такие как undefined, Infinity и NaN;

  • глобальные функции, такие как isNaN(), parseInt()

  • функции-конструкторы, такие как Date(), RegExp(), String(), Object() и Array()

  • глобальные объекты, такие как Math и JSON.

В программном коде верхнего уровня, т. е. в JS-коде, который не является частью функции, сослаться на глобальный объект можно посредством ключевого слова this: const global = this;.

В зависимости от окружения, где выполняется JS глобальный объект будет отличаться:

Global values

  • undefined -- отсутствие значения

  • null -- пустой объект

  • Infinity -- числовая бесконечность

  • NaN -- не число

Global functions:

  • eval() -- вычисляет строку, содержащую JS код, оказывая эффект на окружающий исполнительный контекст.

  • isFinite() -- определяет, что число является конечным.

  • isNaN() -- определяет, является ли переданное число NaN выполняя при этом приведение типов (пытается привести аргумент к числу). В настоящее время стоит использовать ES6+ версию этой функции Nubmer.isNaN(), которая не выполняет приведение типа аргумента к числу.

  • parseFloat(arg) -- преобразовывает аргумент в число с плавающей точкой, пытаясь выполнить при этом приведение типов. ES6+ Deprecated, используйте Number.parseFloat.

  • parseInt(arg) -- преобразовывает аргумент в целое число, пытаясь выполнить при этом приведение типов. ES6+ Deprecated, используйте Number.parseInt.

  • decodeURI(uri) --- Возвращает копию аргумента uri, в которой все шестнадцатеричные управляющие последовательности заменены на символы, которые они представляют. Она выполняет действие, обратное действию функции encodeURI().

  • decodeURIComponent() --- декодирует управляющие последовательности символов в компоненте URI. Возвращает копию аргумента s, в которой шестнадцатеричные управляющие последовательности заменены представляемыми ими символами.

  • encodeURI() --- Выполняет кодирование URI с помощью управляющих последовательностей.

 > encodeURIComponent('http://example.com/Für Elise/') // 'http%3A%2F%2Fexample.com%2FF%C3%BCr%20Elise%2F'
 > encodeURI('http://example.com/Für Elise/') // 'http://example.com/F%C3%BCr%20Elise/'

Эти функции стоит использовать в качестве крайней необходимости.

globalThis object

Глобальное свойство globalThis содержит значение глобального this, который является глобальным объектом.

Свойство globalThis даёт возможность стандартного доступа к глобальному значению this (и как следствие, к глобальному объекту) вне зависимости от окружения.

В отличии от похожих свойств, таких как window и self, оно гарантирует работу как в среде, где есть window, так и в среде, где его нет.

Last updated