> Какие есть стандарты JavaScript (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: EdenAI
Стек: JavaScript
> Пример ответа
Короткий ответ
Основные стандарты JavaScript - это ECMAScript (ES), спецификация которого развивается версиями: ES5 (2009), ES6/ES2015, и далее ежегодные релизы. Также существуют стандарты веб-платформы: DOM (Document Object Model), BOM (Browser Object Model), Web APIs (Fetch, WebSocket, Service Workers) и спецификации WHATWG (HTML Living Standard). Для серверного JavaScript ключевой стандарт - Node.js, основанный на V8 и частично на libuv.
Подробное объяснение
JavaScript стандартизируется организацией Ecma International через комитет TC39. Основной стандарт - ECMAScript, который определяет синтаксис, типы, операторы, объекты и алгоритмы. Версии: ES5 (полная поддержка во всех браузерах), ES2015 (классы, модули, стрелочные функции, promises), ES2016+ (async/await, optional chaining, nullish coalescing). Каждый год выходит новая версия.
Параллельно существуют стандарты веб-платформы:
- DOM (Document Object Model) - спецификация W3C для работы с HTML/XML документами
- BOM (Browser Object Model) - неформальный стандарт для работы с браузером (window, navigator, location)
- Web APIs - Fetch API, WebSocket, Service Workers, Web Workers, Canvas, WebGL и другие
- HTML Living Standard от WHATWG - определяет поведение браузера
Для серверного JavaScript:
- Node.js - реализация на базе V8 с собственным API (fs, http, path)
- Deno - альтернатива с поддержкой Web APIs
- Bun - новый runtime с собственным стандартом
Также существуют спецификации для модулей: CommonJS (используется в Node.js) и ES Modules (стандарт ECMAScript).
На практике
Senior-разработчик должен понимать, что:
- Код должен быть совместим с целевыми версиями ECMAScript (через транспиляцию Babel или указание target в TypeScript)
- Использование новых фич (optional chaining, nullish coalescing) требует проверки поддержки в браузерах
- DOM API может отличаться между браузерами (особенно старые версии IE)
- Для серверного кода нужно учитывать различия между Node.js, Deno и Bun
- Web Workers и Service Workers имеют свои ограничения (отсутствие доступа к DOM)
Пример кода
JAVASCRIPT// Проверка поддержки ECMAScript фичиconst hasOptionalChaining = () => {try {eval('({})?.a');return true;} catch {return false;}};// Использование с проверкойif (hasOptionalChaining()) {const user = response?.data?.user;} else {const user = response && response.data && response.data.user;}// Работа с DOM (стандарт W3C)const element = document.querySelector('.app');element.addEventListener('click', handleClick);// Web API (Fetch)const data = await fetch('/api/users').then(res => res.json());// Node.js специфичный кодconst fs = require('fs');const content = fs.readFileSync('./config.json', 'utf-8');
Как отвечать на собеседовании
Начни с ECMAScript как основного стандарта, упомяни ключевые версии и их нововведения. Затем перейди к веб-стандартам (DOM, Web APIs) и серверным runtime. Покажи понимание различий между спецификациями и их практическое применение. Приведи пример, когда нужно учитывать совместимость (например, optional chaining в старых браузерах). Заверши упоминанием современных тенденций (Deno, Bun) и важности транспиляции.
Что проверяет интервьюер
- Понимание разницы между ECMAScript и JavaScript
- Знание истории версий и ключевых нововведений
- Осведомленность о веб-стандартах (DOM, Web APIs)
- Понимание различий между серверными runtime
- Умение применять знания на практике (транспиляция, полифиллы)
- Способность оценивать совместимость кода с разными средами
Типичные ошибки
- Путать ECMAScript и JavaScript как одно и то же
- Не знать про WHATWG и HTML Living Standard
- Считать, что все браузеры одинаково поддерживают DOM API
- Игнорировать различия между CommonJS и ES Modules
- Не учитывать, что Web Workers не имеют доступа к DOM
- Думать, что Node.js полностью соответствует ECMAScript (он использует V8, но добавляет свои API)
> Похожие задачи по frontend
Как работает наследование в JavaScript с использованием super и методов родительского класса?
Что такое ECMAScript
Почему нельзя использовать JSON.stringify и JSON.parse для глубокого копирования объектов с функциями в JavaScript
Что происходит при запуске бесконечной рекурсивной функции с console.log в браузере
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью