Skip to main content

Глобальний об'єкт global

1. Що таке global у Node.js

global - це глобальний об'єкт Node.js, який існує в усіх модулях і зберігає глобально доступні змінні та функції, видимі з будь-якого місця програми.

Аналог в інших середовищах:

СередовищеГлобальний об'єкт
Node.jsglobal
Браузерwindow
Web Workersself
Сучасний стандартglobalThis

2. Головна ідея

Коли ти запускаєш Node.js-застосунок, він виконується у своєму процесі й середовищі. Деякі об'єкти (наприклад, process, Buffer, console) мають бути доступні в будь-якому модулі, тому вони визначені як властивості об'єкта global.

3. Приклад

javascript
console.log(global); // виведе всі глобальні властивості

Приклад ключових властивостей:

javascript
{ global: [Circular], process: [process], console: [console], setTimeout: [Function], clearTimeout: [Function], setInterval: [Function], Buffer: [class Buffer], ... }

4. Важлива відмінність від браузера

ОсобливістьУ браузеріУ Node.js
Глобальний об'єктwindowglobal
Глобальні функції (setTimeout, console тощо)Властивості windowВластивості global
Оголошення var у глобальній областідодає у windowне додає у global
Контекст this на верхньому рівніthis === windowthis !== global

5. Перевірка:

javascript
console.log(this === global); // false

Чому? У Node.js кожен файл - це модуль, і він обгорнутий у функцію:

javascript
(function(exports, require, module, __filename, __dirname) { // твій код });

Тому this усередині файлу відноситься до module.exports, а не до global.

6. Доступ до глобальних об'єктів

Ти можеш використовувати глобальні функції без імпорту:

javascript
setTimeout(() => console.log('Hello!'), 1000); console.log(process.pid); console.log(Buffer.from('Hi!'));

Під капотом усе це властивості об'єкта global:

javascript
global.setTimeout(() => console.log('Hello!'), 1000); global.process; global.Buffer;

7. Приклади часто вживаних властивостей global

ВластивістьПризначення
globalПосилання на сам глобальний об'єкт
processІнформація про процес і середовище Node.js
consoleГлобальний логер
BufferРобота з бінарними даними
setTimeout() / setInterval() / setImmediate()Таймери
clearTimeout() / clearInterval() / clearImmediate()Очищення таймерів
queueMicrotask()Додавання мікрозадачі в Event Loop
globalThisСтандартний глобальний об'єкт ES2020
performanceМетрики продуктивності (починаючи з Node 8.5+)

8. Створення власних глобальних змінних

Можна додавати свої значення в global (але не рекомендується!):

javascript
global.APP_NAME = 'MyApp'; global.VERSION = '1.0.0'; console.log(APP_NAME); // MyApp

Працює в будь-якому модулі:

javascript
// app.js global.APP_NAME = 'ShopX'; // routes.js console.log(APP_NAME); // ShopX

Але це погана практика, тому що:

  • створює приховані залежності між модулями;
  • ускладнює тестування й налагодження;
  • може призвести до конфліктів імен.

Краще експортувати дані явно:

javascript
// config.js export const APP_NAME = 'ShopX';

9. Різниця між global і globalThis

Об'єктДе доступнийПримітка
globalТільки в Node.jsNode-специфічний
windowТільки в браузеріБраузерний
globalThisУніверсальнийПрацює і в Node.js, і в браузері

Приклад:

javascript
console.log(globalThis === global); // true в Node.js console.log(globalThis === window); // true в браузері

10. Приклад практичного застосування

Перевірка середовища:

javascript
if (global.process) { console.log('Код виконується в Node.js'); }

Створення глобальної змінної з безпечною перевіркою:

javascript
if (!globalThis.config) { globalThis.config = { env: 'development' }; } console.log(globalThis.config.env); // development

11. Візуально

javascript
┌────────────────────────────────┐ Node.js Runtime├────────────────────────────────┤ │ global │ │ ├─ process │ │ ├─ console │ │ ├─ setTimeout()│ ├─ Buffer│ ├─ ...└─ (твої змінні, якщо додаси)└────────────────────────────────┘

12. Коротке резюме

ПунктОпис
Що цеГлобальний об'єкт Node.js
ПризначенняМістить функції й змінні, доступні з будь-якого модуля
Основні властивостіprocess, console, Buffer, setTimeout, setImmediate та ін.
Аналог у браузеріwindow
Сучасний стандартglobalThis
РекомендаціїНе засмічуй global користувацькими змінними - використовуй імпорти/експорти

Одним реченням:

global - це об'єкт верхнього рівня в Node.js, який робить доступними системні функції й змінні (наприклад, process, Buffer, setTimeout) у всіх модулях без імпорту, але не є областю видимості для this чи var.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.