За три десятилетия JavaScript прошел путь от поспешного прототипа для браузера Netscape до самого распространенного языка программирования в мире. Ниже — ключевые вехи этой эволюции.
Зарождение языка (1990–1999)
25 декабря 1990 года. Тим Бернерс-Ли запускает первый браузер в ЦЕРНе — WorldWideWeb, позже переименованный в Nexus.

Декабрь 1991 года. В США принимают Закон о высокопроизводительных вычислениях (закон Гора), открывший государственное финансирование сетевой инфраструктуры.
Январь 1993 года. Марк Андрессен и Эрик Бина в Университете Иллинойса создают Mosaic — первый браузер с графическим интерфейсом, ставший по-настоящему массовым.

Начало 1995 года. Компания Netscape контролирует почти 80% рынка браузеров. Сайтам не хватает динамики, и разработчикам требуется легкий скриптовый язык для взаимодействия с пользователем.

Май 1995 года. Брендан Эйх приходит в Netscape с задачей интегрировать диалект Scheme прямо в браузер. Руководство торопит инженера: Microsoft готовит собственный ответ.

Спустя 10 дней. Эйх разрабатывает прототип языка Mocha: синтаксис напоминает Java, функции первого класса взяты из Scheme, динамическая типизация — из Lisp, а прототипное наследование — из Self.
Осень 1995 года. Язык сначала переименовывают в LiveScript, а в декабре — в JavaScript ради привлечения внимания к растущей популярности Java.
Август 1996 года. Microsoft проводит обратную разработку JavaScript и выпускает собственный движок JScript в составе Internet Explorer 3.

Ноябрь 1996 года. Начинается война браузеров. Чтобы защитить технологию от монопольного влияния Microsoft, Netscape передает спецификацию языка в комитет ECMA International.
Июнь 1997 года. Комитет TC-39 публикует первую версию стандарта ECMA-262 (ES1). В ней уже заложены основы современного языка: объекты, функции первого класса и прототипы.
Декабрь 1999 года. Выходит стандарт ES3. В язык добавляют регулярные выражения, конструкцию try...catch и строгое равенство. Эта редакция определяет облик веба на целое десятилетие.
Темные века и война стандартов (2000–2008)
После краха доткомов комитет TC-39 начинает работу над амбициозным проектом ECMAScript 4. В язык планируют добавить статическую типизацию, классы и интерфейсы. Дуглас Крокфорд из Yahoo и представители Microsoft выступают против чрезмерного усложнения спецификации. Разногласия приводят к закрытию проекта ES4.

Internet Explorer занимает более 90% рынка, а Microsoft развивает браузер по собственным правилам. Появление объекта XMLHttpRequest закладывает основу технологии AJAX и будущей концепции одностраничных приложений (SPA).
Август 2006 года. Джон Резиг публикует библиотеку jQuery. Она скрывает различия между браузерными реализациями DOM и задает стандарт удобного API для манипуляции элементами страницы.
Сентябрь 2008 года. Google запускает браузер Chrome с движком V8. Компиляция JavaScript в машинный код в реальном времени кардинально меняет планку производительности.

Возрождение и выход на сервер (2009–2015)
Май 2009 года. Райан Даль объединяет движок V8 с циклом событий (event loop) на C++ и создает Node.js. С этого момента JavaScript выходит за пределы браузера.

Декабрь 2009 года. Комитет выпускает ES5 — первую утвержденную редакцию стандарта за 10 лет. Она приносит строгий режим (use strict), нативную поддержку JSON и методы обхода массивов.

2010–2013 годы. Появляются первые SPA-фреймворки. AngularJS делает упор на декларативные шаблоны и двустороннее связывание данных, а Backbone.js предлагает минималистичную структуру. В 2013 году инженеры Facebook представляют React с концепцией виртуального DOM и однонаправленного потока данных.

Современная эпоха (2015 — настоящее время)
2015 год (ES6 / ECMAScript 2015). Самое масштабное обновление в истории языка: стрелочные функции, блочная область видимости (let и const), классы, промисы, модули (import/export) и деструктуризация. Появление компиляторов Babel и TypeScript позволяет использовать новые возможности без потери совместимости со старыми окружениями.
С этого момента комитет TC-39 переходит на ежегодный релизный цикл:
- ES2017: синтаксис
async/awaitдля комфортной работы с асинхронным кодом. - ES2018: операторы Rest и Spread для объектов.
- ES2020: оператор опциональной цепочки (
?.) и оператор нулевого слияния (??). - ES2022: приватные поля классов (
#field) и методArray.prototype.at(). - ES2024: новые методы иммутабельной работы с массивами (
toSorted,toReversed) и декораторы.
JavaScript прошел путь от спешно собранного скриптового движка до мощной платформы, объединяющей браузеры, серверы, мобильные и десктопные приложения.