Глобальные объекты, доступность fetch, файловые и сетевые API
Безопасно определяйте среду выполнения (globalThis/window/global), проверяйте доступность fetch и разберитесь, почему для работы с файлами нужен Node, тогда как браузер сосредоточен на DOM и сети
«Глобальные объекты, доступность fetch, файловые и сетевые API» — бесплатный урок JavaScript Academy на CoddyKit. Это урок 1 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения JavaScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс JavaScript Academy содержит 3 уроков всего.
Общая картина
Цель: понимать, где выполняется ваш код.
- Глобальные объекты: globalThis, window, global
- fetch: проверяйте наличие возможности, а не предполагайте её
- Файлы: в Node есть fs, а в браузерах его нет
- Адреса: URL работает в обеих средах

Безопасное определение среды выполнения
Используйте проверки typeof, чтобы избежать ReferenceErrors и определить, где выполняется код.
// Detect presence of common globals
const hasWindow = typeof window !== "undefined";
const hasGlobal = typeof global !== "undefined";
const hasProcess = typeof process !== "undefined" && process && typeof process.version === "string";
console.log("globalThis exists?", typeof globalThis !== "undefined");
console.log("window?", hasWindow);
console.log("global?", hasGlobal);
console.log("Node process?", hasProcess);

fetch: проверка наличия возможности
В браузерах обычно есть fetch, а в старых версиях Node его может не быть. Сначала проверьте typeof fetch.
// Feature-detect fetch; do not assume it exists everywhere
const hasFetch = typeof fetch === "function";
console.log("fetch available?", hasFetch);
// If available, you could call fetch(...). For a safe demo we only log.
if (!hasFetch) {
console.log("Provide a fallback or use a library in Node versions without fetch.");
}

Файлы: Node и браузер
Node предоставляет fs для работы с файлами, а браузер — нет. Сохраняйте безопасность одного и того же пути выполнения с помощью проверки возможности.
// Files are a Node concern; browsers cannot read your disk directly
const hasRequire = typeof require === "function";
console.log("CommonJS require available?", hasRequire);
// Safe message instead of real file I/O (keeps the demo runnable everywhere)
if (hasRequire) {
console.log("In Node you can use fs for files; in browsers you cannot.");
} else {
console.log("No require here; likely a browser-like or sandboxed runtime.");
}

Общее средство: API URL
Класс URL одинаково разбирает адреса в разных средах выполнения; это удобно для небольших инструментов.
// URL is available in both environments
const u = new URL("https://example.com/path?x=1#top");
console.log("host:", u.host);
console.log("pathname:", u.pathname);
console.log("search:", u.search);
console.log("hash:", u.hash);

Привычки для начинающих
Советы:
- Проверяйте typeof fetch перед использованием.
- Для работы с файлами нужен Node (например, fs), а браузеры ориентированы на DOM и сеть.
- Используйте globalThis для переносимых глобальных объектов.
- Предпочитайте небольшие проверки возможностей догадкам о среде выполнения.

Тест по обнаружению fetch
Быстрая проверка: безопасное обнаружение fetch.

Повторение
Повторение: определяйте среду выполнения с помощью безопасных проверок typeof, проверяйте наличие fetch, помните, что файлы относятся к стороне Node, и используйте URL в обеих средах.

Часто задаваемые вопросы
Урок «Глобальные объекты, доступность fetch, файловые и сетевые API» бесплатный?
Да — полный текст урока «Глобальные объекты, доступность fetch, файловые и сетевые API» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс JavaScript Academy, подпишись на CoddyKit PRO. Курс JavaScript Academy содержит 3 уроков всего.
Чему я научусь в уроке «Глобальные объекты, доступность fetch, файловые и сетевые API»?
Безопасно определяйте среду выполнения (globalThis/window/global), проверяйте доступность fetch и разберитесь, почему для работы с файлами нужен Node, тогда как браузер сосредоточен на DOM и сети Ты практикуешь JavaScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать JavaScript Academy?
Предыдущий опыт не требуется. JavaScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 3.
Сколько времени занимает урок «Глобальные объекты, доступность fetch, файловые и сетевые API»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке JavaScript Academy?
Да. Каждый урок JavaScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Глобальные объекты, доступность fetch, файловые и сетевые API
- Особенности загрузчика ESM, различия путей и URL
- Переменные среды и схемы конфигурации