JavaScript — язык веба
JavaScript — это язык программирования, который работает прямо в браузере. Когда страница реагирует на клик, проверяет форму, анимирует меню или подгружает новый контент без перезагрузки — за этим стоит именно JavaScript. Движок этого языка встроен в любой браузер на любом устройстве, и поэтому JavaScript — единственный язык, который выполняется в вебе «из коробки».
Но браузером дело давно не ограничивается. Node.js, Deno и Bun позволяют писать на JavaScript серверы, консольные утилиты, сборочные скрипты и API. Один и тот же язык крутится и на фронтенде, и на бэкенде — во многом поэтому он так широко распространён.
Немного покажу, как выглядит код на JavaScript:
Три строки — три идеи: объявили переменную, вызвали встроенную функцию, вывели строку-шаблон. Эти три вещи вы будете видеть буквально на каждой странице реального JavaScript-кода.
Где выполняется JavaScript
Сам по себе JavaScript — это всего лишь спецификация языка (она называется ECMAScript). Чтобы код реально заработал, нужен движок — программа, которая читает ваш код и исполняет его. На практике вы столкнётесь с двумя сценариями:
- Браузеры. В Chrome и Edge работает V8. В Firefox — SpiderMonkey. В Safari — JavaScriptCore. Откройте любую страницу, нажмите F12, вставьте JavaScript во вкладку Console — и код тут же выполнится.
- Node.js. Вытаскивает V8 из браузера и даёт ему доступ к файловой системе, сети и операционной системе. Именно благодаря этому JavaScript работает и на сервере.
// Запустите в консоли браузера:
document.title = "Новый заголовок вкладки";
// Запустите с помощью Node.js:
// $ node script.js
JavaScript в браузере умеет работать со страницей (DOM), но к файловой системе его не подпустят. А JavaScript в Node.js читает файлы и открывает сокеты, зато никакой страницы у него нет. Язык один и тот же — суперспособности разные.
Для чего нужен JavaScript
Если коротко — почти для всего, что так или иначе связано с вебом. Если чуть подробнее, вот примерно в том порядке, в котором вы с этим столкнётесь:
- Интерактивные веб-страницы. Валидация форм, выпадающие меню, модальные окна, живой поиск, drag-and-drop.
- Одностраничные приложения (SPA). Gmail, Figma, Notion, Linear — целые приложения, которые рендерятся и обновляются средствами JavaScript, обычно через фреймворк вроде React, Vue или Svelte.
- Серверная разработка. REST API, GraphQL-эндпоинты и realtime-сервисы на Node.js, Express, Fastify или NestJS.
- Инструменты сборки и разработки. Бандлеры (Vite, esbuild, webpack), линтеры (ESLint), тест-раннеры (Vitest, Jest).
- Кроссплатформенные приложения. Десктоп через Electron (VS Code, Slack, Discord) и мобильные приложения через React Native.
Всё это знать с первого дня не нужно. Но полезно держать в голове сам факт — тогда формулировка «это всего лишь JavaScript» перестаёт звучать как ограничение.
Как работает JavaScript на самом деле
Упрощённая модель примерно такая: вы пишете исходный код, движок парсит его во внутреннее представление и выполняет. Современные движки используют JIT-компиляцию (just-in-time) — сначала они быстро интерпретируют код, а по ходу выполнения оптимизируют «горячие» участки, превращая их в машинный код.
JavaScript не компилируется в бинарник заранее. Вы просто отдаёте исходник браузеру (или Node), а всё остальное движок берёт на себя:
Вставьте этот код в консоль браузера или сохраните в файл greet.js и запустите node greet.js — результат будет один и тот же. Никакой компиляции, никаких конфигов сборки, ничего устанавливать не нужно — по крайней мере для такого простого примера.
JavaScript и Java: в чём разница
Названия похожи, а языки — нет. Имя «JavaScript» появилось в 1995 году, чтобы поймать волну популярности Java — чисто маркетинговое решение, которое с тех пор регулярно сбивает с толку новичков.
| JavaScript | Java | |
|---|---|---|
| Типизация | Динамическая | Статическая |
| Где выполняется | Браузеры, Node.js | JVM |
| Парадигма | Мультипарадигменный, на основе прототипов | Классическое ООП на классах |
| Компиляция | JIT, сборка не требуется | Сначала компиляция в байт-код |
Если кто-то говорит «я выучил Java, значит, знаю JavaScript» — не верьте. Это два разных языка, у которых случайно совпали четыре буквы в названии.
JavaScript vs TypeScript
TypeScript — это JavaScript с прикрученной сверху системой типов. Вы пишете код с аннотациями типов, компилятор TypeScript их проверяет, а на выходе получается обычный JavaScript, который запустится везде, где работает JS.
// JavaScript — типы неявные:
function add(a, b) {
return a + b;
}
// TypeScript — типы явные:
function add(a: number, b: number): number {
return a + b;
}
Любой корректный JavaScript-файл — это одновременно и корректный TypeScript-файл. То есть TypeScript не конкурент JavaScript, а его надмножество. Большинство крупных кодовых баз сегодня написаны на TypeScript, но начинать всё равно стоит с JavaScript. Без понимания того, к чему именно TypeScript добавляет типы, разобраться в его смысле не получится.
Немного истории — чтобы странности языка стали понятнее
JavaScript был написан за десять дней в 1995 году Бренданом Айком в компании Netscape. Эта история важна: часть шероховатостей языка (нестрогое равенство, автоматическая вставка точек с запятой, typeof null === "object") — прямое следствие решений, принятых в жёстком цейтноте и затем навсегда зафиксированных ради обратной совместимости веба.
Стандарт языка называется ECMAScript, и новая версия выходит каждый год. Ключевой релиз — ES2015: он принёс let, const, стрелочные функции, классы и модули. Когда говорят «ES6» или «современный JavaScript», обычно имеют в виду именно набор возможностей от 2015 года и позже — сейчас он поддерживается повсеместно.
Писать на современном JavaScript — реально приятно. Старые странности никуда не делись, но их почти всегда можно обойти — привычкам для этого мы научимся по ходу курса.
Что стоит запомнить
- JavaScript работает в любом браузере, а благодаря Node.js — ещё и на сервере.
- На нём пишут почти всё, что связано с вебом: интерфейсы, бэкенд, инструментарий, а также десктопные и мобильные приложения.
- JavaScript — это не Java. TypeScript — надмножество JavaScript, добавляющее статическую типизацию.
- У языка есть исторические странности, но на практике вы будете писать на современном JavaScript (ES2015+).
Дальше: как запустить JavaScript
Теории достаточно — пора запустить настоящий код. В следующей статье разберём три способа запуска JavaScript для новичка: консоль браузера, HTML-файл и Node.js в командной строке.
Часто задаваемые вопросы
Что такое JavaScript простыми словами?
JavaScript — это язык программирования, который работает прямо в браузере, а ещё на сервере через Node.js. Именно он делает страницы живыми: реагирует на клики, обновляет контент без перезагрузки, ходит за данными в API. И это единственный язык, который изначально понимает любой браузер.
Для чего используют JavaScript?
Да буквально для всего в вебе: от мелочей вроде выпадашек и валидации форм до полноценных веб-приложений (Gmail, Figma, Notion), серверов (Node.js, Deno), мобильных приложений (React Native), десктопа (VS Code работает на Electron) и инструментов сборки. Если что-то крутится в браузере или связано с вебом — скорее всего, там есть JavaScript.
JavaScript и Java — это одно и то же?
Нет, это вообще разные языки. Похожие названия — чистый маркетинг 90-х. Java — статически типизированный язык с классами, работает на JVM. JavaScript — динамически типизированный, живёт в браузере и Node, устроен совершенно иначе. Общие у них только первые четыре буквы.
Чем JavaScript отличается от TypeScript?
TypeScript — это, по сути, JavaScript плюс система типов. Вы пишете код с аннотациями типов, компилятор их проверяет, а на выходе получается обычный JavaScript. Любой валидный .js-файл одновременно является и валидным TypeScript. Чтобы учить JavaScript, TypeScript не нужен, но в больших проектах сегодня почти всегда используют именно его.