W3docs

Добро пожаловать в JavaScript!

Что такое JavaScript, где он работает (браузер и Node.js), что он умеет и почему его стоит изучить — дружелюбное введение для начинающих с примерами.

JavaScript (часто сокращается до JS) — язык программирования для веба. Он появился как инструмент создания интерактивных веб-страниц, а сегодня используется для всего: от кнопок и анимаций в браузере до полноценных серверных приложений на Node.js. Это один из немногих языков, который можно применять как на стороне клиента, так и на стороне сервера, — во многом именно поэтому он столь популярен.

На этой странице рассказывается, что такое JavaScript, в каких двух средах он работает (браузер и сервер), что он умеет делать и почему его стоит изучить. К концу вы поймёте, какое место JavaScript занимает в разработке и что изучать дальше.

Что такое JavaScript?

JavaScript был создан в 1995 году Бренданом Эйхом в компании Netscape. Он был разработан для того, чтобы веб-страницы реагировали на действия пользователя — нажатие кнопок, заполнение форм или отображение контента без перезагрузки страницы.

Язык стандартизирован под спецификацией ECMAScript. Каждый ежегодный выпуск добавляет новые возможности; издание 2015 года (широко известное как ES6) стало важным скачком: в нём появились стрелочные функции, шаблонные строки, классы и модули. Когда говорят «современный JavaScript», обычно имеют в виду ES6 и более поздние версии.

Несколько терминов, которые характеризуют JavaScript и часто встречаются:

  • Высокоуровневый — вы не управляете памятью или аппаратным обеспечением напрямую.
  • Динамически типизированный — переменная может содержать значение любого типа, а проверка типов происходит во время выполнения программы, а не до него.
  • Интерпретируемый (с JIT-компиляцией) — код выполняется без отдельного шага компиляции; движок (например, V8 в Chrome) компилирует его на лету.

Несмотря на название, JavaScript не имеет ничего общего с Java. Это было маркетинговое решение; два языка принципиально разные.

Вот небольшая программа, которая выводит сообщение — такой код одинаково работает и в консоли браузера, и в Node.js:

const language = "JavaScript";
console.log(`Hello from ${language}!`);
// Output: Hello from JavaScript!

Что умеет JavaScript?

  • Обновлять страницу на лету. JavaScript может изменять содержимое веб-страницы без её перезагрузки. Это делается через DOM (Document Object Model) — живое представление страницы в браузере.
  • Реагировать на события. Он выполняет код в ответ на клики, нажатия клавиш, прокрутку, отправку форм и многое другое.
  • Асинхронно обращаться к серверам. Он может получать данные в фоновом режиме (например, проверять имя пользователя во время набора) без блокировки страницы.
  • Хранить и обрабатывать данные. Он имеет встроенную поддержку массивов (array), объектов (object), дат, математических вычислений и обработки текста.

Например, этот код изменяет главный заголовок страницы при запуске в браузере:

// Runs in the browser: replace the text of the first <h1>
document.querySelector('h1').textContent = 'Hello, JavaScript!';

Где работает JavaScript

JavaScript требует движка для выполнения. Две наиболее распространённые среды — это браузер и Node.js.

В браузере

Каждый современный браузер (Chrome, Firefox, Safari, Edge) имеет встроенный движок JavaScript. Именно здесь JavaScript зародился, и именно он делает веб-страницы интерактивными. JavaScript подключается к HTML-странице с помощью тега <script>:

<!-- Load an external file -->
<script src="app.js"></script>

<!-- Or write code inline -->
<script>
  console.log('This runs in the browser.');
</script>

Вы можете попробовать JavaScript прямо сейчас, не написав ни строчки HTML: откройте инструменты разработчика в браузере (нажмите F12 или Ctrl+Shift+I / Cmd+Option+I на Mac), перейдите на вкладку Console и вводите код напрямую.

На сервере с Node.js

Node.js позволяет запускать JavaScript вне браузера — на сервере, на вашем компьютере или в инструментах сборки. Сервер — это компьютер, который отвечает на запросы, например отправляя обратно веб-страницу или данные.

  • Один язык — и клиент, и сервер. Вы можете писать и то, что видит пользователь, и серверную логику на одном языке, что упрощает разработку.
  • Хорошо подходит для задач с большим количеством I/O. Node.js эффективно обрабатывает множество одновременных соединений, что отлично подходит для API и приложений реального времени, таких как чаты.
  • Огромная экосистема пакетов. Node.js поставляется с npm — крупнейшим реестром программного обеспечения в мире, так что вы можете использовать готовые инструменты вместо того, чтобы писать всё с нуля.

Ключевое различие: код в браузере может взаимодействовать со страницей и пользователем (document, window), тогда как код Node.js может взаимодействовать с системой (файлы, сетевые серверы), но не имеет страницы. Основной язык одинаков в обоих случаях.

Почему стоит изучать JavaScript?

  • Он повсюду. Практически каждый сайт использует JavaScript, поэтому это фундаментальный навык для веб-разработки.
  • Он открывает доступ к фреймворкам. Знание JavaScript позволяет использовать популярные инструменты, такие как React, Angular, Vue.js и Node.js для создания более крупных приложений.
  • Он работает почти везде. Помимо веба, на JavaScript создаются мобильные приложения (React Native) и настольные приложения (Electron).
  • У него большое сообщество. Доступно множество учебников, библиотек и помощи, когда вы заходите в тупик.
  • Он востребован. Многие работодатели ищут специалистов со знанием JavaScript.
  • Он даёт быструю обратную связь. Вы сразу видите, как работает ваш код в браузере, что делает обучение приятным.

Следующие шаги

Теперь, когда вы знаете, что такое JavaScript и где он работает, лучший способ научиться — это писать код. Рекомендуем следующие главы:

Хотите ли вы создать сайт, писать серверные приложения или просто научиться программировать — JavaScript отличное место для старта. Продолжайте учиться вместе с нами на W3Docs.

Практика

Практика
Какие из следующих утверждений верны о JavaScript?
Какие из следующих утверждений верны о JavaScript?
Was this page helpful?